Смотреть

Нужны клиенты?

shape shape

Django Июль 28, 2022

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

Author Picture

Написал Андрей Галкин

Просмотров 10

Blog Thumbnail

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.

теги: Django

Давайте работать вместе

Расскажите нам о своем проекте