django 自帶認證系統(login,logout,authenticate,login_required)


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

setting.py
AUTH_USER_MODEL = 'mytest.User'         #app名字.表名字
LOGIN_URL="/mytest/login/"              #如果沒有登錄,將會返回的url,用於裝飾器 @login_required()

model.py(重構User model)
from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
nickname = models.CharField(max_length=50, blank=True)

class Meta(AbstractUser.Meta):
verbose_name = "用戶信息"
verbose_name_plural = verbose_name

def __str__(self):
return self.username

view.py
def acc_login(req):
if req.method == "GET":
return render(req,"acc_login.html")
else:
email=req.POST.get("acc")
pwd=req.POST.get("pwd")
print("user:%s-%s" % (email,pwd))
user=authenticate(username=email,password=pwd)#驗證:返回驗證對象,失敗則是None,成功返回username
print("user:%s"%user)
if user:
login(req,user)
# next_url = req.GET.get("next", '../index')
# return redirect(next_url)
return redirect("/mytest/index/")
else:
error="賬號或者密碼錯誤"
return render(req, "acc_login.html",{'error':error})

def acc_logout(req):
logout(req)
return redirect("/mytest/login/")

@login_required()
def index(request):
context = {"key": "ok"}
return render(request,'index.html',context)



# 關於User model 密碼,需要用 set_password
def test_create(req):
user = models.User(
username='jam',
nickname= 'jam'
)
user.set_password('1234')
return HttpResponse("ok")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM