В Django вы можете легко создать вход и регистрацию на одном HTML-шаблоне, используя формы и представления.
1. Создайте формы для входа и регистрации пользователя:
from django import forms class LoginForm(forms.Form): username = forms.CharField(label='Username') password = forms.CharField(label='Password', widget=forms.PasswordInput) class RegistrationForm(forms.Form): username = forms.CharField(label='Username') password = forms.CharField(label='Password', widget=forms.PasswordInput) confirm_password = forms.CharField(label='Confirm Password', widget=forms.PasswordInput)
2. В представлении, обработайте GET- и POST-запросы для входа и регистрации:
from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout def login_registration(request): if request.method == 'POST': login_form = LoginForm(request.POST) registration_form = RegistrationForm(request.POST) if login_form.is_valid(): username = login_form.cleaned_data['username'] password = login_form.cleaned_data['password'] user = authenticate(username=username, password=password) if user: login(request, user) return redirect('home') if registration_form.is_valid(): username = registration_form.cleaned_data['username'] password = registration_form.cleaned_data['password'] confirm_password = registration_form.cleaned_data['confirm_password'] if password == confirm_password: user = User.objects.create_user(username=username, password=password) user.save() login(request, user) return redirect('home') else: login_form = LoginForm() registration_form = RegistrationForm() return render(request, 'login_registration.html', {'login_form': login_form, 'registration_form': registration_form})
3. Создайте HTML-шаблон 'login_registration.html' для отображения форм входа и регистрации:
{% if form_errors %} <ul> {% for error in form_errors %} <li>{{ error }}</li> {% endfor %} </ul> {% endif %} <form method="POST" action="{% url 'login_registration' %}"> {% csrf_token %} <h3>Login</h3> {{ login_form.as_p }} <button type="submit">Login</button> </form> <hr> <form method="POST" action="{% url 'login_registration' %}"> {% csrf_token %} <h3>Registration</h3> {{ registration_form.as_p }} <button type="submit">Register</button> </form>
4. Добавьте URL-шаблон в файле urls.py:
from django.urls import path from .views import login_registration urlpatterns = [ path('login_registration/', login_registration, name='login_registration'), ]
Теперь вы можете открыть страницу по адресу /login_registration/ и увидеть формы входа и регистрации на одной странице. После успешной аутентификации или регистрации пользователь будет перенаправлен на страницу home (обратите внимание, что вы должны заменить 'home' на адрес нужной вам страницы). Если данные формы не проходят валидацию, ошибки будут выведены на страницу.