我今天遇到了同样的问题。它与 WTForms 的编程方式有关,因此它可以与许多不同的模板库一起使用。Django 1.3 只会将f视为 HTML 字符串,即使它具有其他属性。
为了解决这个问题,您必须添加一个模板标签来检索属性。
将以下内容添加到您的项目层次结构中:
- 模板标签
- 模板标签/初始化.py
- 模板标签/模板标签
- 模板标签/模板标签/初始化.py
- 模板标签/模板标签/getattribute.py
然后在您的 settings.py 文件中,将以下行添加到INSTALLED_APPS
'templatetags',
打开 getattribute.py 并粘贴以下代码:
from django import template
from django.conf import settings
register = template.Library()
@register.tag
def getattribute(parser, token):
try:
tag_name, tag_object, tag_function = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError("%r tag requires two arguments" % token.contents.split()[0])
return getattrNode(tag_object, tag_function)
class getattrNode(template.Node):
def __init__(self, tag_object, tag_function):
self.tag_object = tag_object
self.tag_function = tag_function
def render(self, context):
return getattr(context[self.tag_object], self.tag_function)()
这将允许您在模板中并需要一个不会显示的属性时使用以下代码:
{% load getattribute %}
{% getattribute OBJECT ATTRIBUTE %}
在你的情况下:
{% getattribute f label %}
希望有帮助!