Регистрация
Примеры кастомизации формы регистрации
Для добавления регистрации на сайт устанавливаем код в шаблон навигации:
<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