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) # 類型為<class 'django.contrib.auth.models.User'> # print(type(models.Customer.objects.get(name="趙凡"))) # print(user,type(user)) if user: login(request,user) # 驗證成功之后登錄 return redirect('/crm') return render(request, "login.html") def acc_logout(request): logout(request) # 登出 return redirect("/login")
必須登錄之后才能訪問頁面
from django.contrib.auth.decorators import login_required @login_required # 加上這個裝飾器就是限制必須登錄才能執行這個函數 def dashboard(request): print(request.user) return render(request, "crm1/dashboard.html")
如果加了@login_required,頁面跳轉會有問題,解決方法如下
在setting里追加一下內容/login/
跟URL是一致的
LOGIN_URL = "/login/"