django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout #用户名有效性验证 登入和登出 from django.contrib.auth.decorators import login_required # 验证用户是否登录 def acc_login(request): if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) # 验证用户名的有效性 if user: login(request,user) # 验证成功之后登录 return redirect('/crm') return render(request, "login.html") def acc_logout(request): logout(request) # 登出 return redirect("/login")
@login_required # 加上这个装饰器就是限制必须登录才能执行这个函数 def dashboard(request): print(request.user) return render(request, "crm1/dashboard.html")
如果加了@login_required,页面跳转会有问题,解决方法如下
在setting里追加一下内容/login/跟URL是一致的
LOGIN_URL = "/login/"
建议将验证系统做成一个中间件,这样就不需要在所有的视图函数中进行用户的登录验证操作了,当然这里需要考虑到哪些页面是不需要用户进行登录就可以进行访问,这些都是与需求相关的了
当我仰望星空, 看见了涛涛江水, 闻到了人声鼎沸;可当我蓦然回望,再也触摸不到那逝去的时光,再也看不到那夕阳下的少年!