我觉得我错过了一些非常明显的东西。我正在尝试使用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>>'
对我在这里缺少什么的想法?感谢。
答案 0 :(得分:1)
我不确定这是什么原因,但我可以向你保证,这不是WTForms。我们不会对类做任何有趣的事情,所以如果Django没有正确调用动作,那就是Django中的东西。您是否尝试重命名该功能,以查看名称“action”是否是一个奇怪的问题?
或者,您可以尝试使用@property装饰器将操作转换为属性,或者只是将操作定义为类中的字符串。
话虽如此,我建议不要在python端将URL嵌入到表单中。通过使用{%url%}模板标签的URL反转,可以更好地解决这个问题。