Пусть у нас есть простая форма регистрации пользователя в системе на Django. Для того, чтобы пользователь мог зарегистрироваться, нужно предоставить ему возможность указать логин и пароль:
Если пользователь не заполнил какое-то поле, то выводим определенное сообщение об ошибке:
Теперь рассмотрим, как можно реализовать такую валидацию формы в Django.
1. Создадим приложение registration.
manage.py startapp registration
2. Подключим к нашему проекту созданное приложение, указав его в settings.py, а также путь к папке с его шаблонами:
3. Подключим роуты нашего приложения в главном файле роутов проекта testsite/urls.py:
4. Определим роуты нашего приложения registration/urls.py:
5. Определим представление нашего приложения в registration/views.py:
6. Представление использует форму. Определим ее в registration/forms.py:
7. Также представление использует шаблон. Определим его в registration/templates/registrate.html:
8. Теперь вы можете перейти по адресу http://127.0.0.1:8000/registration/ и посмотреть, как работает валидация в Django-приложении, которое мы написали.
Скачать исходники кода Django-приложения этого урока
Если пользователь не заполнил какое-то поле, то выводим определенное сообщение об ошибке:
Теперь рассмотрим, как можно реализовать такую валидацию формы в Django.
1. Создадим приложение registration.
manage.py startapp registration
2. Подключим к нашему проекту созданное приложение, указав его в settings.py, а также путь к папке с его шаблонами:
INSTALLED_APPS = (
# ...
'registration',
)
# ...
TEMPLATE_DIRS = (
# ...
'registration/templates',
)
3. Подключим роуты нашего приложения в главном файле роутов проекта testsite/urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^registration/', include('registration.urls')),
url(r'^admin/', include(admin.site.urls)),
)
4. Определим роуты нашего приложения registration/urls.py:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'registration.views.registrate', name='registration'),
)
5. Определим представление нашего приложения в registration/views.py:
# -*- coding:utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
# Это наша форма, которую мы определим в forms.py
from .forms import RegistrationForm
def registrate(request):
if request.POST:
form = RegistrationForm(request.POST)
if form.is_valid():
# Просто выводим сообщение о том, что все ОК!
return HttpResponse('Форма верна!')
else:
form = RegistrationForm()
return render(request, 'registrate.html', {'form': form})
6. Представление использует форму. Определим ее в registration/forms.py:
# -*- coding:utf-8 -*-
from django.forms import CharField, Form, PasswordInput
from django import forms
class RegistrationForm(Form):
login = CharField(
label='Логин',
max_length=100,
error_messages={'required': 'Укажите логин'})
password = CharField(
label='Пароль',
widget=PasswordInput(),
error_messages={'required': 'Укажите пароль'})
password_again = CharField(
label='Пароль (еще раз)',
widget=PasswordInput(),
error_messages={'required': 'Укажите пароль еще раз'})
# Валидация проходит в этом методе
def clean(self):
# Определяем правило валидации
if self.cleaned_data.get('password') != self.cleaned_data.get('password_again'):
# Выбрасываем ошибку, если пароли не совпали
raise forms.ValidationError('Пароли должны совпадать!')
return self.cleaned_data
7. Также представление использует шаблон. Определим его в registration/templates/registrate.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Registration</title>
</head>
<body>
<h2>Регистрация</h2>
<form action="" method="post">
{{ form.as_p }}
<input type="submit" value="Отправить" />
{% csrf_token %}
</form>
</body>
</html>
8. Теперь вы можете перейти по адресу http://127.0.0.1:8000/registration/ и посмотреть, как работает валидация в Django-приложении, которое мы написали.
Скачать исходники кода Django-приложения этого урока


Комментариев нет:
Отправить комментарий