欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django登录与注销

程序员文章站 2022-03-25 09:53:43
...

一:Django中自带着登录,验证功能不用自己再去写登录功能。

1、从相应模块导入组件功能

from django.contrib.auth import authenticate,login

2、从request中拿到用户名密码,验证,验证通过获取到用户对象,不通过为None。

        username = request.POST.get("username")
        password = request.POST.get("password")
        user = authenticate(username=username,password=password)

3、通过之后登录用户,涉及到session操作

        if user:
            # 登录,此时生成了session
            login(request,user)
            return redirect("/crm/")
        else:
            print("no pass")

二:Django中自带注销用户功能。

1、注销标签

<li><a href="{% url 'logout' %}">注销</a></li>
{% url 'logout' %} 表示url中名字为logout的,即name='logout'

2、注销view函数

from django.contrib.auth import authenticate,login,logout

def acc_logout(request):
    logout(request)    # 注销
    return redirect("/login/")    # 页面跳转

三:登录时用户名或者密码出错时,显示错误提示信息:

1、前端页面

            <span style="color: red">{{ error_msg }}</span>

2、后台处理,加上错误信息

    error_msg = ''      # 正确时
    error_msg = 'Wrong username or password!'    
    print(username,password)
return render(request,"login.html",{"error_msg":error_msg})# 错误时

四:没有登录时,不能进入主页面,只能跳转到登录页面

具体的哪个视图函数需要,加在哪个视图函数上

from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
    return render(request,"crmapp/dashboard.html")

这样没有登录,直接访问连接到该视图函数的url时,会跳转到Django自带的登录页面。

需要在settings中配置,

LOGIN_URL = '/login/'

  注意url中的next参数:http://127.0.0.1:8080/login/?next=/crm/,表示登录成功后跳转到哪个页面。