Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Не показывает ошибки формы в шаблоне [RSS Feed]

#1 Июнь 23, 2013 16:38:55

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Не показывает ошибки формы в шаблоне

Доброго времени суток, господа.
Столкнулся со следущей проблемой - есть рабочая форма, но при ее заполнении с заведомо не правильными данными (например не соответствие паролей) - в шаблоне не показывает ошибок. Перепробывал уже кучу всего, взываю к помощи.

form.py

class UserCreationForm(forms.ModelForm):
    username = forms.CharField(label='Username', widget=forms.TextInput, required=True)
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput, required=True)
    password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput, required=True)
    profile_vkontakte = forms.CharField(label='Vkontakte profile', widget=forms.TextInput)
    profession = forms.ChoiceField(choices=profession_list)
    coordinate_x = forms.CharField(label='X', widget=forms.TextInput)
    coordinate_y = forms.CharField(label='Y', widget=forms.TextInput)
    class Meta:
        model = User
        fields = ('email', 'username', 'profession', 'coordinate_x', 'coordinate_y', 'profile_vkontakte')
    def clean_password2(self):
        password1 = self.cleaned_data.get("password1")
        password2 = self.cleaned_data.get("password2")
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError("Passwords don't match")
        return password2
    def save(self, commit = True):
        user = super(UserCreationForm, self).save(commit=True)
        user.set_password(self.cleaned_data['password1'])
        if commit:
            user.save()
        return user

views.py
def registration(request):
    if request.method == "POST" :
        form = UserCreationForm(request.POST)
        if form.is_valid():
            print "form is valid"
            form.save()
            return render_to_response("action_succes.html")
        else:
            print form.is_valid()
            print form.errors
            form = UserCreationForm(request.POST)
    else:
        form = UserCreationForm()
    args = {}
    args.update(csrf(request))
    args["form"] = UserCreationForm()
    return render_to_response("registration.html", args)

registration.html
{% extends "base.html" %}
{{ form.errors }}
{{ form.non_field_errors }}
{% block content %}
    {{ form.errors }}
    {{ form.non_field_errors }}
    <form action="registration" method="POST">{%csrf_token%}
        {{ form.errors }}
        {{ form.non_field_errors }}
{{ form.as_ul }}
        {{ form.errors }}
        {{ form.non_field_errors }}
        <input type="submit" value="Register"/><br>
       {{ form.errors }}
        {{ form.non_field_errors }}
{% endblock content %}

Заранее благодарен.



Офлайн

#2 Июнь 23, 2013 19:31:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не показывает ошибки формы в шаблоне

{{ form.errors }}
ЕМНИП, form.errors - это не список и не словарь, а самостоятельный класс, попробуй по нему пройтись циклом
{% for i in form.errors %}
{{i}}
{% endfor %}



Офлайн

#3 Июнь 23, 2013 21:14:47

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Не показывает ошибки формы в шаблоне

Я думаю, причина в этом:

args["form"] = UserCreationForm()
return render_to_response("registration.html", args)

Офлайн

#4 Июнь 25, 2013 09:45:50

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Не показывает ошибки формы в шаблоне

lorien
Я думаю, причина в этом:
args = UserCreationForm()
return render_to_response(“registration.html”, args)
А как должно быть?



Офлайн

#5 Июнь 25, 2013 09:51:13

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Не показывает ошибки формы в шаблоне

    args = {}
    args.update(csrf(request))
    form = UserCreationForm()
    return render(request, "registration.html", {'form':form})

Переписал так, не работает.



Офлайн

#6 Июнь 25, 2013 10:09:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не показывает ошибки формы в шаблоне

Тебе пытаются намекнуть, что ошибки в форме могут появиться только после ее валидации.
Тут

form = UserCreationForm()
ты создаешь инстанс формы, но откуда в ней возьмутся ошибки, если ты не передал в нее никаких значений? В первом посте ты же правильно делал
form = UserCreationForm(request.POST)
ошибка была в том, что независимо от типа реквеста ты пихаешь в контекст
args["form"] = UserCreationForm()
return render_to_response("registration.html", args)



Офлайн

#7 Июнь 25, 2013 10:53:19

lov3catch
Зарегистрирован: 2012-07-15
Сообщения: 43
Репутация: +  0  -
Профиль  

Не показывает ошибки формы в шаблоне

Спасибо Вам, ребята. Огромное



Офлайн

  • Начало
  • » Django
  • » Не показывает ошибки формы в шаблоне[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version