一: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/,表示登录成功后跳转到哪个页面。