Я столкнулся с той же проблемой сегодня.Это связано с тем, как WTForms запрограммирован так, что он будет работать со многими различными библиотеками шаблонов.Django 1.3 будет видеть только f в виде строки HTML, даже если он имеет другие атрибуты.
Чтобы исправить это, необходимо добавить тег шаблона для получения атрибута.
Добавьте следующее в иерархию проектов:
- templatetags
- templatetags / init .py
- templatetags / templatetags
- templatetags / templatetags / init .py
- templatetags / templatetags / 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 %}
Надеюсь, что помогло!