После входа в систему возникает ошибка 'Anonymous User' object has no attribute '_meta'
Я новичок в Django я создаю форму регистрации если отправить форму данные сохраняются успешно полностью но у меня ошибка при перенаправлении или логине view.py
from Blog.forms import SignupForm
from django.contrib.auth import authenticate,login
from django.http import HttpResponseRedirect
def signup_form(request):
form=SignupForm()
if request.method=='POST':
form=SignupForm(request.POST)
if form.is_valid():
user=form.save()
user.refresh_from_db()
# load the profile instance created by the signal
user.save()
raw_password = form.cleaned_data.get('password')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return HttpResponseRedirect('home/')
return render(request,'blog/signup.html',{'form':form})
перенаправление в файле настроек setting.py
LOGIN_REDIRECT='home/'
LOGOUT_REDIRECT_URL='/logout'
мой файл формы выглядит следующим образом forms.py
from django.contrib.auth.models import User
class SignupForm(ModelForm):
class Meta:
model=User
fields=['username','first_name','last_name','email','password']
labels={'username':' Enter User Name','password':' Enter Password','email':'Enter Email','first_name':'Enter First Name','last_name':'Enter Last Name'}
widgets={'password':forms.PasswordInput,'username':forms.TextInput(attrs={'class':'form-control','placeholder':'Enter Your User Name'}),
'password':forms.PasswordInput(attrs={'class':'form-control','placeholder':'Enter Your Password'}),
'email':forms.EmailInput(attrs={'class':'form-control','placeholder':'Enter Your Email'}),
'first_name':forms.TextInput(attrs={'class':'form-control','placeholder':'Enter First Name'}),
'last_name':forms.TextInput(attrs={'class':'form-control','placeholder':'Enter Last Name'})
}
urls.py
path('signup/',views.signup_form,name='signup/'),
У объекта "Анонимный пользователь" нет атрибута '_meta'
Вы можете сделать следующее:
from django.contrib.auth.decorators import login_required
@login_required
def signup_form(request):
form=SignupForm()
if request.method=='POST':
form=SignupForm(request.POST)
if form.is_valid():
user=form.save()
user.refresh_from_db()
# load the profile instance created by the signal
user.save()
raw_password = form.cleaned_data.get('password')
user = authenticate(username=user.username, password=raw_password)
login(request, user)
return HttpResponseRedirect('home/')
else:
return render(request,'blog/signup.html',{'form':form})
Это предотвратит появление AnnonymousUser
. Если возникнет какая-либо ошибка, дайте мне знать, указав точную ошибку в комментарии.