我覺得我錯過了一些非常明顯的東西。我試圖在Django中使用WTForms模板擴展。我在我的開發服務器上有一個工作良好的項目(IE的擴展工作正常),但是當我把它放在測試服務器上時,突然它們被破壞了。兩臺服務器都安裝了相同版本的Python,Django和WTForms。 Settings.py是兩個一樣的,包括:Django模板無法正常工作的WTForms擴展
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>>'
有關我在這裏失蹤的任何想法?謝謝。
我不認爲這個問題與wtforms有什麼關係。對於 django模板語言沒有調用可調用的一些原因。 用不帶參數的不同方法測試理論,並返回一個字符串 。將方法(未調用)傳遞到您的上下文,並將其與您的模板一起取消引用。 – andyortlieb 2010-09-10 16:15:14
這似乎很可能。然而,問題是,爲什麼Django不能正確處理可馴化的東西?唯一傳遞的變量是(self),如果我嘗試創建一個沒有參數的函數然後實例化一個表單,視圖就會中斷。 – 2010-09-10 16:57:39