Пусть у нас есть простая форма регистрации пользователя в системе на 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-приложения этого урока
Комментариев нет:
Отправить комментарий