В этой статье мы разберём, как делается регистрация Django 3 для сайта, думаю вам понравится.
Также если вам интересен Django, то можете прочитать статью
«Как сделать блог на Django»
Основы регистрации на Django:
Для начала разберём что нужно использовать, чтобы сделать простую регистрацию, нужно использовать базовый класс в Django «UserCreationForm», для создания формы и всё, но для начала нужно сделать шаблон, для начала базовый, а потом для регистрации.
Ещё нужно создать проект и приложение на Django, для этого прочитайте статью «Быстрый старт Django».
Делаем базовый шаблон base.html в папке templates, который находится в папке приложения, вот его код.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>{% block title %}{% endblock %}</title> </head> <body> <main> {% block content %}{% endblock %} </main> </body> </html> |
Это просто базовый шаблон, в начале мы делаем блок для вставки заголовка, а потом в main
, делаем блог в котором будет хранится контент.
Теперь сделаем шаблон для регистрации, в папке «pages», назовём его «registr.html», вот он:
1 2 3 4 5 6 7 8 9 10 11 12 | {% extends 'base.html' %} {% block title %}Регистрация{% endblock %} {% block content %} <h2>Регистрация</h2> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Отправить</button> </form> {% endblock %} |
Тут уже наследуем его из базового класса, и где должен быть заголовок пишем регистрация, и внутри контента, задаём форму, её будем передавать в файле «views.py».
Дальше делаем файл в котором будем рендарить страницу регистрации, это «views.py», в нём создадим функцию registr.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Подключение для рендера from django.shortcuts import render # Подключение стандартной формы для регистрации from django.contrib.auth.forms import UserCreationForm # Функция регистрации def regist(request): # Массив для передачи данных шаблонны data = {} # Проверка что есть запрос POST if request.method == 'POST': # Создаём форму form = UserCreationForm(request.POST) # Валидация данных из формы if form.is_valid(): # Сохраняем пользователя form.save() # Передача формы к рендару data['form'] = form # Передача надписи, если прошло всё успешно data['res'] = "Всё прошло успешно" # Рендаринг страницы return render(request, 'pages/registr.html', data) else: # Иначе # Создаём форму form = UserCreationForm() # Передаём форму для рендеринга data['form'] = form # Рендаринг страницы return render(request, 'pages/registr.html', data) |
Давайте разберём этот код, сперва мы подключаем все нужные библиотеки/компоненты, потом создаём функцию которая будет отвечать за всю логику, и в самом начале делаем массив который будет передаваться в качестве контекста.
Потом пишем условие, если есть post запрос, там внутри опять создаём объект класса UserCreationForm()
, в качестве параметра передаём ему то, что у нас было в POST запросе и делаем валидацию формы.
Если валидация прошла успешно, то сохраняем пользователя и передаём сообщение «Всё прошло успешно», редарим страницу.
Если же, нет POST запроса, то просто передаём форму в качестве контекста и рендарим страницу.
Как видите всё очень просто, теперь добавляем страницу в «url.py», которая находится в папке с файлом «settings.py».
1 2 3 4 5 6 7 | from django.contrib import admin from main import views urlpatterns = [ path('admin/', admin.site.urls), path('registr/', views.registr), ] |
Переходим на страницу регистрации и вот что должно получится.
Всё должно работать так как надо.
Как добавить поля к регистрации:
Также иногда нужно добавлять свои поля для регистрации, для этого нужно добавить файл с формой, который будет называя «forms.py», а вот его код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Подключаем компонент для работы с формой from django import forms # Подключаем компонент UserCreationForm from django.contrib.auth.forms import UserCreationForm # Подключаем модель User from django.contrib.auth.models import User # Создаём класс формы class RegistrForm(UserCreationForm): # Добавляем новое поле Email email = forms.EmailField(max_length=254, help_text='This field is required') # Создаём класс Meta class Meta: # Свойство модели User model = User # Свойство назначения полей fields = ('username', 'email', 'password1', 'password2', ) |
В начале мы подключаем все нужные компоненты для создания новой формы регистрации, потом создаём класс RegistrForm
и унаследуем его от UserCreationForm
, внутри идёт свойство для нового поля Email, которое как понятно из название для электронной почты.
Дальше класс Meta
, он предназначен для объявления и настройки полей, вначале свойство для обозначения с какой моделью работать, в нашем случае User
, второе свойство fields
, обозначает какие поля использовать.
После того как создали этот класс нужно не много изменить файл «views.py», вот он.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Подключение для рендера from django.shortcuts import render # Подключение новой формы для регистрации from .forms import RegistrForm # Функция регистрации def regist(request): # Массив для передачи данных шаблонны data = {} # Проверка что есть запрос POST if request.method == 'POST': # Создаём форму form = RegistrForm(request.POST) # Валидация данных из формы if form.is_valid(): # Сохраняем пользователя form.save() # Передача формы к рендару data['form'] = form # Передача надписи, если прошло всё успешно data['res'] = "Всё прошло успешно" # Рендаринг страницы return render(request, 'pages/registr.html', data) else: # Иначе # Создаём форму form = RegistrForm() # Передаём форму для рендеринга data['form'] = form # Рендаринг страницы return render(request, 'pages/registr.html', data) |
Тут я не буду особо рассказывать что к чему, так как единственное что мы сделали это заменили UserCreationForm
, на RegistrForm
и всё, вот что получилось.
Как видите у нас появилась новое поле для Email, которое используете для регистрации.
Также стоит упомянуть про создание регистрации для своей модели пользователя, там всё точно также, просто в качестве свойства fields
используете поля из модели, в качестве свойства model
, также используете свои, вот и всё.
Вывод:
В этой статье вы прочитаете, как делается регистрация на Python Django 3, тут мы показали как сделать самый как сделать используя базовую форму регистрации и как её дополнить.