代码之家  ›  专栏  ›  技术社区  ›  Glycerine

Django解析变量的作用是什么?(template.variable)

  •  1
  • Glycerine  · 技术社区  · 15 年前

    什么? resolve_variable 怎么办?我可以用它来访问 request 在视野之外?


    编辑

    所以 template.Variable 是正确的方式-但我仍然不确定它的目的。文档并没有真正的帮助。

    干杯。

    2 回复  |  直到 8 年前
        1
  •  5
  •   erbridge    11 年前

    @register.tag
    def my_tag(parser, token):
        # This version uses a regular expression to parse tag contents.
        try:
            # Splitting by None == splitting by spaces.
            tag_name, var_name = token.contents.split(None, 1)
        except ValueError:
            raise template.TemplateSyntaxError, "%r tag requires arguments" % token.contents.split()[0]
        #this will "bind" the variable in the template to the actual_var object
        actual_var = template.Variable(var_name)
        return MyNode(template_variable)
    
    
    class MyNode(template.Node):
        def __init__(self, actual_var):
            self.actual_var = actual_var
    
        def render(self, context):
            actual_var_value = self.actual_var.resolve(context)
            #do something with it
            return result
    

    from django.template import RequestContext
    def my_view(request):
        #request stuff
        return render_to_response("mytemplate.html", {'extra context': None,}, context_instance=RequestContext(request))
    

    @register.tag
    def simple_request_aware_tag(parser, token):
        return SimpleRequestAwareNode()
    
    class SimpleRequestAwareNode(template.Node):
        def render(self, context):
            request = template.Variable('request').resolve(context)
            #we want to return the current username for example
            return request.user.get_full_name()
    
        2
  •  0
  •   FlogFR    10 年前

    resolve_variable

    Resolves a variable