我是Django的新手 . 我试图在注册用户后创建自动登录 . 但我失败了 . 我为用户名和密码asuthentification创建了一个自定义身份验证后端 .
class EmailBackend(object):
def authenticate(self, username=None, password=None):
user_cls = get_user_model()
try:
user = user_cls.objects.get(email=username)
if user.check_password(password):
return user
except user_cls.DoesNotExist:
return None
def get_user(self, user_id):
user_cls = get_user_model()
try:
return user_cls.objects.get(pk=user_id)
except user_cls.DoesNotExist:
return None
AUTHENTICATION_BACKENDS = (
'user.back_auth.EmailBackend',
'django.contrib.auth.backends.ModelBackend',
)
我尝试在注册后为用户制作自动登录:
def register(request):
if request.method == 'POST':
user_form = UserForm(request.POST)
if user_form.is_valid():
user = user_form.save()
messages.info(request, "Thanks for registering. You are now logged in.")
user = authenticate(username=request.POST['username'],
password=request.POST['password'])
login(request, user)
return HttpResponseRedirect("/")
else:
user_form = UserForm()
return render(request,
'user/register.html',
{'user_form': user_form } )
但是,我正在接下来:
/ user / register /中的AttributeError'AnonymousUser'对象没有属性'后端'
2 回答
您的用户创建方法错误,因为我假设您以纯文本格式保存用户 .
两种方式......
方法使用
set_password
方法使用
create_user
我的工作版本: