Как исправить редирект после регистрации? Django
Сегодня столкнулся с такой проблемой, что после регистрации форма никуда не переходит. Загвоздка в том, что форма не отправляет запрос в базу данных, но я могу создать пользователя через админ-панель Django.
views.py
def registration(request):
if request.method == 'POST':
form = UserRegistrationForm(data=request.POST)
if form.is_valid():
form.save()
user = form.instance
auth.login(request, user)
messages.success(
request, f'{user.username}, Successful Registration'
)
return HttpResponseRedirect(reverse('user:login'))
else:
form = UserRegistrationForm()
return render(request, 'users/registration.html')
forms.py
from django import forms
from django.contrib.auth.forms import AuthenticationForm, \
UserCreationForm, UserChangeForm
from .models import User
class UserLoginForm(AuthenticationForm):
username = forms.CharField()
password = forms.CharField()
class Meta:
model = User
fields = ['username', 'password']
class UserRegistrationForm(UserCreationForm):
class Meta:
model = User
fields = (
'first_name',
'last_name',
'username',
'email',
'password1',
'password2',
)
first_name = forms.CharField()
last_name = forms.CharField()
username = forms.CharField()
email = forms.CharField()
password1 = forms.CharField()
password2 = forms.CharField()
class ProfileForm(UserChangeForm):
class Meta:
model = User
fields = (
'image',
'first_name',
'last_name',
'username',
'email',
)
image = forms.ImageField(required=False)
first_name = forms.CharField()
last_name = forms.CharField()
username = forms.CharField()
email = forms.CharField()
registration.html
urls.py
from django.urls import path
from . import views
app_name = 'users'
urlpatterns = [
path('login/', views.login, name='login'),
path('registration/', views.registration, name='registration'),
path('profile/', views.profile, name='profile'),
path('logout/', views.logout, name='logout'),
]
Я изменил форму регистрации, но ничего не получилось, пожалуйста, помогите мне!
я успешно решил эту проблему!
views.py
я исправляю этот штрих, чтобы передать обратную форму в шаблон
return render(request, 'users/registration.html', {'form': form})
и исправьте этот штрих
user = form.save()
В результате функция выглядит следующим образом
def registration(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
user = form.save()
auth.login(request, user)
messages.success(
request, f'{user.username}, Successful Registration'
)
return HttpResponseRedirect(reverse('user:login'))
else:
form = UserRegistrationForm()
return render(request, 'users/registration.html', {'form': form})