Оставьте свои контакты
И мы с вами свяжемся в рабочее время
Блог

Django регистрация пользователя

Django предоставляет встроенную систему аутентификации и авторизации, которая позволяет регистрировать и аутентифицировать пользователей в веб-приложении. Чтобы реализовать функцию регистрации пользователей в Django, вам потребуется выполнить несколько шагов.

Создание приложения Django для работы с пользователями

Создайте новое приложение Django для работы с пользователями. Вы можете назвать его "accounts". Для этого выполните следующую команду в терминале:

python manage.py startapp accounts

Создание модели пользователя

В файле models.py вашего приложения создайте модель пользователя, которая будет наследоваться от AbstractUser:

from django.db import models

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):

pass

Создание формы для регистрации пользователя

В файле forms.py вашего приложения создайте форму UserCreationForm для регистрации новых пользователей:

from django import forms

from django.contrib.auth.forms import UserCreationForm

from .models import User

class SignUpForm(UserCreationForm):

email = forms.EmailField(max_length=254, help_text='Required. Enter a valid email address.')

class Meta:

model = User

fields = ('username', 'email', 'password1', 'password2', )

Создание представления для регистрации пользователя

В файле views.py вашего приложения создайте представление signup для обработки запросов на регистрацию новых пользователей:

from django.shortcuts import render, redirect

from .forms import SignUpForm

def signup(request):

if request.method == 'POST':

form = SignUpForm(request.POST)

if form.is_valid():

form.save()

return redirect('home')

else:

form = SignUpForm()

return render(request, 'signup.html', {'form': form})

Создание шаблона для регистрации пользователя

Создайте шаблон signup.html для отображения формы регистрации:

{% extends 'base.html' %}

{% block content %}

<h2>Sign up</h2>

<form method="post">

{% csrf_token %}

{{ form.as_p }}

<button type="submit">Sign up</button>

</form>

{% endblock %}

Обновление файла маршрутов

Обновите файл urls.py вашего приложения, чтобы связать представление signup с URL-адресом signup/:

from django.urls import path

from . import views

urlpatterns = [

path('signup/', views.signup, name='signup'),

]

Обновление файла настроек проекта

Добавьте 'accounts' в список установленных приложений в файле settings.py вашего проекта:

INSTALLED_APPS = [

# ...

'accounts',

Создание страницы успешной регистрации

Создайте шаблон registration_success.html для отображения страницы успешной регистрации:

{% extends 'base.html' %}

{% block content %}

<h2>Registration Successful</h2>

<p>You have successfully registered for our website. You can now log in using your username and password.</p>

{% endblock %}

Обновление представления для регистрации пользователя

В представлении signup добавьте код для отображения страницы успешной регистрации после успешной отправки формы:

from django.shortcuts import render, redirect

from django.contrib.auth import login, authenticate

from .forms import SignUpForm

def signup(request):

if request.method == 'POST':

form = SignUpForm(request.POST)

if form.is_valid():

user = form.save()

user.refresh_from_db()

user.profile.email = form.cleaned_data.get('email')

user.save()

raw_password = form.cleaned_data.get('password1')

user = authenticate(username=user.username, password=raw_password)

login(request, user)

return redirect('registration_success')

else:

form = SignUpForm()

return render(request, 'signup.html', {'form': form})

Обновление файла маршрутов

Добавьте URL-адрес registration_success/ и связанное с ним представление в файл urls.py вашего приложения:

from django.urls import path

from . import views

urlpatterns = [

path('signup/', views.signup, name='signup'),

path('registration_success/', views.registration_success, name='registration_success'),

]

Тестирование

Запустите сервер Django и перейдите на страницу http://localhost:8000/signup/. Вы должны увидеть форму регистрации пользователя. Заполните форму и отправьте ее. Если все прошло успешно, вы должны быть перенаправлены на страницу успешной регистрации http://localhost:8000/registration_success/.

Вот и все. Теперь вы знаете, как реализовать функцию регистрации пользователей в Django.
Made on
Tilda