Я делаю форму для регистрации пользователя. Вот что мой шаблон выглядит следующим образом:Django Form class question
<h1>Register</h1>
<form action="/register/" method="post">
{{ form.as_p }}
<input type="submit" value="Register">
</form>
И вот мое мнение:
from djangoproject1.authentication import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
def main(request):
rform = forms.RegisterForm()
return render_to_response("authentication/index.html", {'form': rform})
def register(request):
if request.method == 'POST':
rform = forms.RegisterForm(request.POST)
if rform.is_valid():
print 'VALID!'
# do something
return HttpResponseRedirect("/register-success/")
else:
print 'INVALID!'
rform = forms.RegisterForm()
return render_to_response("authentication/index.html", {'form': rform})
Я не получил действительную часть все же, я все еще работаю на недействительных частях. Вот моя форма выглядит так:
from django import forms
class RegisterForm(forms.Form):
username = forms.CharField(min_length=6,max_length=15)
password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
confirm_password = forms.CharField(widget = forms.PasswordInput(),min_length=6,max_length=15)
phone_number = forms.RegexField('\d\d\d-\d\d\d-\d\d\d\d',error_message='Invalid format')
def clean_password(self):
password = self.cleaned_data['password']
confirm_password = self.cleaned_data['confirm_password']
if password != confirm_password:
raise forms.ValidationError("Passwords don't match")
return password
Имя пользователя, пароль, номер телефона. Довольно просто. Однако, когда я нажимаю «Register», не заполняя ничего, я должен получить кучу ошибок, но они нигде не появляются. Это должно произойти автоматически или я чего-то не хватает?
Спасибо!
Да, если вы удалите эту строку, вы вернете недопустимую форму, в которой будут содержаться сообщения об ошибках для полей, которые остались пустыми. – nstehr
так ответит на ваш вопрос? –
Извините, немного побежал. Да, это действительно ответ на мой вопрос, однако, я все еще сталкиваюсь с проблемой. Я получаю исключение KeyError на «confirm_password». Я посмотрел KeyError и сказал, что Raised «когда ключ отображения (словаря) не найден в наборе существующих ключей». Из того, что я понимаю о cleaned_data, «confirm_password» должен быть там b/c, это поле, но я предполагаю, что это не – JPC