繁体   English   中英

注册账号后Django无法识别用户*AnonymousUser*

[英]Django can't identify the user after registering an account *AnonymousUser*

所以目标是让新用户注册一个帐户,然后重定向到主页并被识别 这样用户就不必注册他们的帐户,然后立即进行登录过程。 我想要标准注册,例如 Instagram、Twitter 和其他专业应用程序。

到目前为止,我是用户可以注册并将他们重定向到主页的地方,但是当我尝试在屏幕上打印他们的名字时,我得到了 AnonymousUser。 用户信息注册后写入数据库,但Django不知道用户是谁。 为了让 Django 在注册后知道谁登录,他们必须在注册他们的帐户后注销然后登录。 如果有人可以提供帮助,我将不胜感激。

视图.py

from django.shortcuts import render, redirect
from .forms import RegisterForm
from django.contrib import messages

def register(response):
    if response.method == "POST":
        form = RegisterForm(response.POST)
        if form.is_valid():
            form.save()
            return redirect("/")
    else:
        form = RegisterForm()


    return render(response, "register/register.html", {"form": form})

使用 authentication() 和 login() 函数:

from django.contrib.auth import authenticate, login

def register(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            messages.info(request, "Thanks for registering. You are now logged in.")
            new_user = authenticate(username=form.cleaned_data['username'],
                                    password=form.cleaned_data['password1'],
                                    )
            login(request, new_user)
            return HttpResponseRedirect("/dashboard/")

最初回答

注册成功后POST REQUEST使用登录方法显式登录用户,您可以访问用户名,而无需用户再次登录...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM