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

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 %}

Заранее благодарен.
FishHook
{{ form.errors }}
ЕМНИП, form.errors - это не список и не словарь, а самостоятельный класс, попробуй по нему пройтись циклом
{% for i in form.errors %}
{{i}}
{% endfor %}
lorien
Я думаю, причина в этом:
args["form"] = UserCreationForm()
return render_to_response("registration.html", args)
lov3catch
lorien
Я думаю, причина в этом:
args = UserCreationForm()
return render_to_response(“registration.html”, args)
А как должно быть?
lov3catch
    args = {}
    args.update(csrf(request))
    form = UserCreationForm()
    return render(request, "registration.html", {'form':form})

Переписал так, не работает.
FishHook
Тебе пытаются намекнуть, что ошибки в форме могут появиться только после ее валидации.
Тут
form = UserCreationForm()
ты создаешь инстанс формы, но откуда в ней возьмутся ошибки, если ты не передал в нее никаких значений? В первом посте ты же правильно делал
form = UserCreationForm(request.POST)
ошибка была в том, что независимо от типа реквеста ты пихаешь в контекст
args["form"] = UserCreationForm()
return render_to_response("registration.html", args)
lov3catch
Спасибо Вам, ребята. Огромное
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB