【问题标题】:My custom template tag in Django rendering template variables as string我在 Django 中的自定义模板标签将模板变量呈现为字符串
【发布时间】:2011-08-27 00:58:13
【问题描述】:

标签的使用-
{% for x in posts %}
{% render_con_form for shastra x.id %}

而不是传递 x.id 的值,它是一个整数,而是传递 - 'x.id'。
我该如何解决这个问题?

编辑 -

def render(self, context):
    if self.app == 'broadcast' or self.app == 'shastra':
        form = CommentsForm()   
    str = render_to_string('comments/form.html', {'form' : form, 'app' : self.app, 'id' : self.id})
    return str

def __init__(self, app, id):
self.app = str(app)
self.id = Variable(id)

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    尝试使用以下已接受答案的解决方案:

    Django-Template : Get Variables in a Tag block !

    在你的模板标签内

    // obj is x.id
    def __init__(self, obj):
        from django.template import Variable
        // get the variable value
        self.id = Variable(obj)
    
    def render(self, context):
        id = self.id.resolve(context)
    

    【讨论】:

    • 嘿,看看我的编辑,还是不行,我是不是也得在渲染函数里做点什么?
    • 渲染时捕获 VariableDoesNotExist:在 u'x.id' 中查找键 [x] 失败 - 这是错误
    • 嘿,现在在提交我的表单时,我收到了一个 CSRF 错误,似乎自定义标签的上下文覆盖了主页的上下文。
    • 这不应该相关,在模板标签内,您必须使用 Variable.resolve() 解析上下文变量 'csrf_token',然后包含一个 与它的价值..
    猜你喜欢
    • 1970-01-01
    • 2017-03-19
    • 2015-03-14
    • 2014-03-04
    • 2015-01-20
    • 2013-10-18
    • 2012-12-18
    • 2012-03-25
    • 2017-12-28
    相关资源
    最近更新 更多