from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# Redirect to a success page.
...
else:
# Return an 'invalid login' error message.
...
2条答案
按热度按时间pjngdqdw1#
您不需要自己设置
is_authenticated
,因为此只读字段由AuthenticationMiddleware
处理。在Django文档中阅读更多关于:
以下是在自定义视图中登录用户的方法:
你也可以使用Django方便的基于类的
LoginView
:https://docs.djangoproject.com/en/4.2/topics/auth/default/#django.contrib.auth.views.LoginView下面是在自定义视图中注销用户的方法:
或者再次使用方便的LogoutView。
如果需要,可以在
request.user
上检查is_authenticated
。使用登录装饰器,您可以只允许登录的用户访问。您可以将未经验证的用户重定向到装饰器中设置的
login_url
。或者如果跳过,它将自动重定向到settings.LOGIN_URL
。bmvo0sr52#
或者创建一个用户认证系统,你需要在构建模型中的用户,或者你创建一个新的模型并扩展用户模型。Django有自己的认证功能,通过接收用户发布的用户名和密码来进行认证,并检查数据库是否存在,如果它返回true django有一个相同的内置登录功能,它将is_authenticated属性设置为yes和之后,无论你想在登录后做什么,你都可以把逻辑放在那里。注销也是如此,django有相同的注销函数,你传入请求和用户,然后把is_authenticated属性设置为false给用户;
def logout_view(request):logout(request)return redirect('home ')