Использует ли структура форм Django структуру сообщений Django? - PullRequest
2 голосов
/ 03 мая 2011

Я использую django-регистрацию и знакомлюсь с фреймворком форм Django. Я использовал метод .to_p() для отображения форм, но мне нужен лучший способ представления данных форм, поэтому я читаю на основе форм.

Передаются ли ошибки, переданные фреймворком форм, в фреймворк сообщений Django ?

Ответы [ 3 ]

4 голосов
/ 03 мая 2011

Нет, они полностью разделены - как и должно быть, поскольку сообщения находятся в django.contrib и, следовательно, не могут быть гарантированно включены.

Лучший способ показать ошибки в формесам, как метод as_p.Я использую тег шаблона для отображения каждого поля с соответствующими ошибками за один раз - это модифицированная версия тега Питера Баумгартнера display_field .

2 голосов
/ 03 мая 2011

Каждое поле формы имеет свои собственные сообщения об ошибках, хранящиеся в словаре ... Итак

class MyForm(Form):
    myfield = CharField()
    nullfield = CharField(blank=True)

После вашего шага проверки, если были обнаружены некоторые ошибки формы, все они сохраняются в словаре ошибокИтак,

form = MyForm(request.GET)
if form.is_valid():
    ...
else:
    # assert form errors
    assert 0, form.errors

словарь ошибок формы будет выглядеть как

{'myfield': [u'This field is required.']}

Таким образом, каждая ошибка будет добавлена ​​в словарь ошибок.Вы можете проверить этот словарь и создать одно сообщение об ошибке, или все, что вы хотите сделать в своем представлении.Или в шаблоне вы можете перебирать их с помощью

{%for err in form.errors%}
    ........
{%endfor %}

. Как вы видите, в приложении django messages нет ничего ... Если вы действительно хотите передать эти сообщения об ошибках в приложение django messages, вы можетепопробуйте

for error in form.errors:
    request.user.message_set.create(message=form.errors['error'])
0 голосов
/ 03 мая 2011

Нет, не автоматически.Вам придется справиться с этим самостоятельно.

 if not form.is_valid():
     # loop through form.errors and
     # convert that in messages.error
     # where appropriate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...