Хочу сделать форму регистрации и форму авторизации на одной странице, с помощью js сделать красиво, но в файле Urls.py нужно будет в url path занести две функции, регистрацию и авторизацию, вот как сейчас в urls.py:
from django.urls import path
from users.views import login, registration, profile, logout
app_name = 'users'
urlpatterns = [
path('login', login, name='login'),
path('registration', registration, name='registration'),
path('profile', profile, name='profile'),
path('logout', logout, name='logout'),
]
Как объединить логин и регистрацию в один path, или есть альтернативный выход, для которого нужно поменять формы:
from django.contrib.auth.forms import AuthenticationForm, UserCreationForm, UserChangeForm
from users.models import User
from django import forms
class UserLoginForm(AuthenticationForm):
username = forms.CharField(widget=forms.TextInput(attrs={
'class': 'login-content-input',
'placeholder': 'Логин',
'id': 'login'
}))
password = forms.CharField(widget=forms.PasswordInput(attrs={
'class': 'login-content-input',
'placeholder': 'Пароль',
'id': 'password',
}))
class Meta:
model = User
fields = ['username', 'password']
class UserRegistrationForm(UserCreationForm):
last_name = forms.CharField(widget=forms.TextInput(attrs={
'class': 'reg-content-input',
'placeholder': 'Фамилия',
}))
first_name = forms.CharField(widget=forms.TextInput(attrs={
'class': 'reg-content-input',
'placeholder': 'Имя',
}))
username = forms.CharField(widget=forms.TextInput(attrs={
'class': 'reg-content-input',
'placeholder': 'Имя пользователя',
}))
email = forms.CharField(widget=forms.EmailInput(attrs={
'class': 'reg-content-input',
'placeholder': 'E-mail',
}))
password1 = forms.CharField(widget=forms.PasswordInput(attrs={
'class': 'reg-content-input',
'placeholder': 'Пароль',
}))
password2 = forms.CharField(widget=forms.PasswordInput(attrs={
'class': 'reg-content-input',
'placeholder': 'Ещё раз',
}))
class Meta:
model = User
fields = [
'last_name', 'first_name', 'username', 'email', 'password1', 'password2'
]
или же поменять во views.py:
def login(request):
if request.method == 'POST':
form = UserLoginForm(data=request.POST)
if form.is_valid():
username = request.POST['username']
password = request.POST['password']
user = auth.authenticate(username=username, password=password)
if user:
auth.login(request, user)
return HttpResponseRedirect(reverse('main'))
else:
form = UserLoginForm()
context = {
'title': 'Burch - Авторизация',
'form': form
}
return render(request, 'login.html', context)
def registration(request):
if request.method == 'POST':
form = UserRegistrationForm(data=request.POST)
if form.is_valid():
form.save()
messages.success(request, 'Вы успешно зарегистрировались')
return HttpResponseRedirect(reverse('users:login'))
else:
form = UserRegistrationForm()
context = {
'title': 'Burch - Регистрация',
'form': form
}
return render(request, 'registration.html', context)
если мало информации, скажите, я просто не маэстро, и даже не среднячок в программировании, буду рад исправить свои ошибки