Link Search Menu Expand Document

Регистрация

Примеры кастомизации формы регистрации

Для добавления регистрации на сайт устанавливаем код в шаблон навигации:

<span class="navbar-text">
    <a href="{% url 'register' %}">Регистрация</a> | <a href="{% url 'login' %}">Авторизация</a>
</span>

Прописываем маршруты в файле urls.py:

path('register/', register, name='register'),
path('login/', user_login, name='login'),

И добавляем контроллеры-функции в views.py:

from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'Вы успешно зарегистрировались')
            return redirect('login')
        else:
            messages.error(request, 'Ошибка регистрации')
    else:
        form = UserRegisterForm()
    return render(request, 'news/register.html', {'form': form})

def user_login(request):
    return render(request, 'news/login.html')

Также нужно в главном шаблоне сайта перед блоком контента добавить шаблон вывода системных сообщений.

{% if messages %}
{% for message in messages%}

    {% if message.tags == 'error' %}
    <div class="alert alert-danger" role="alert">
        {{ message }}
    </div>
    {% else %}
    <div class="alert alert-{{ message.tags }}" role="alert">
        {{ message }}
    </div>
    {% endif %}

{% endfor %}
{% endif %}

Подробнее про Django Message framework

Настройка дизайна формы регистрации

Настраивать правила вывода формы регистрации необходимо в файле forms.py

Подключим необходимые классы:

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
``````py
class UserRegisterForm(UserCreationForm):
    username = forms.CharField(label='Имя пользователя', help_text='Имя пользователя должно состоять максимум из 150 символов', widget=forms.TextInput(attrs={'class': "form-control", 'autocomplete': 'off'}))
    password1 = forms.CharField(label='Пароль', widget=forms.PasswordInput(attrs={'class': "form-control"}))
    password2 = forms.CharField(label='Подтверждение пароля', widget=forms.PasswordInput(attrs={'class': "form-control"}))
    email = forms.EmailField(label='E-mail', widget=forms.EmailInput(attrs={'class': "form-control"}))

    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')

После этого в файле views.py заменим UserCreationForm на только что созданный класс UserRegisterForm