Django模板的WTForms扩展无法正常工作

时间:2010-09-10 14:17:09

标签: python django django-templates

我觉得我错过了一些非常明显的东西。我正在尝试使用Django的WTForms模板扩展。我的开发服务器上有一个项目很好(IE扩展工作正常)但是当我把它放在测试服务器上时,突然它们坏了。两台服务器都安装了相同版本的Python,Django,WTForms。 Settings.py在两者上都是相同的,包括:

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'wtforms.ext.django',

)

在模板中,我正在做:

{% load wtforms %}

{% autoescape off %}


<form id='returnform' action='{{form.action}}' method='POST' ENCTYPE="multipart/form-data">

在实际形式中,行动定义为:

class UserForm(wtforms.Form):
    #Some fields and such here
    def action(self):
        return "/Admin/H/requests/"

因此,在Dev服务器上,我的页面加载了正确的'action = url',就像我期望的那样。但是在我的测试服务器上,它返回一个

的页面
'action=<bound method UserForm.action of <pulseman.admin.forms.UserForm object at 0x9c8598c>>'

对我在这里缺少什么的想法?感谢。

1 个答案:

答案 0 :(得分:1)

我不确定这是什么原因,但我可以向你保证,这不是WTForms。我们不会对类做任何有趣的事情,所以如果Django没有正确调用动作,那就是Django中的东西。您是否尝试重命名该功能,以查看名称“action”是否是一个奇怪的问题?

或者,您可以尝试使用@property装饰器将操作转换为属性,或者只是将操作定义为类中的字符串。

话虽如此,我建议不要在python端将URL嵌入到表单中。通过使用{%url%}模板标签的URL反转,可以更好地解决这个问题。