Расширение WTForms для шаблонов Django не работает - PullRequest
0 голосов
/ 10 сентября 2010

Я чувствую, что упускаю что-то действительно очевидное.Я пытаюсь использовать расширения шаблона WTForms с Django.У меня есть проект на моем сервере разработки, который работает отлично (т.е. расширения работают должным образом), но когда я помещаю его на тестовый сервер, они внезапно ломаются.На обоих серверах установлены одинаковые версии 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 Ответ

1 голос
/ 12 сентября 2010

Я не уверен, в чем причина этого, но могу вас заверить, что это не WTForms.Мы не делаем ничего классного с классами, поэтому, если Django не вызывает действие должным образом, это что-то в Django.Вы пытались переименовать функцию, чтобы увидеть, является ли это странной проблемой с именем «действие»?

В качестве альтернативы, вы можете попробовать превратить действие в свойство с помощью декоратора @property или просто определить действие какстрока в классе.

С учетом сказанного, я бы предложил не встраивать URL-адреса в форму на стороне Python.Эту проблему лучше решить с помощью обращения URL с тегом шаблона {% url%}.

...