django 自带认证系统(login,logout,authenticate,login_required)
2024-08-31 06:08:04
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")
最新文章
- float和double在内存中的存储方式
- C# 重绘tabControl,添加关闭按钮(页签)
- php使用位与运算符【&;】或【|】实现权限管理
- 修改CSV中的某些值 -- 2
- C#综合揭秘——细说多线程(上)
- Entity Framewor中的 Migration
- MFC拆分窗口及它们之间的数据交换
- leetcode第二题--Median of Two Sorted Arrays
- C# 语言的多线程编程,完全是本科OS里的知识
- Professional C# 6 and .NET Core 1.0 - Chapter 41 ASP.NET MVC
- Spring中一个类的注入和引用是不一样的
- 设计模式(3)抽象工厂模式(Abstract Factory)
- css实现的交互运动
- java——对象学习笔记
- Android进阶(十六)子线程调用Toast报Can't create handler inside thread that has not called Looper.prepare() 错误
- JAVA生成一个二维数组,使中间元素不与相邻的9个元素相等,并限制每一个元素的个数
- arcgis desktop 地理编码服务发布
- this和super用法详解
- 颜色 color
- OpenStack中MySQL高可用配置
热门文章
- phpfpm和nginx设置开机自动启动
- jQuery事件操作
- VIM全总结
- cisco RIP(传闻协议)Routing information protocol
- 【Python开发】matplotlib绘图不显示问题解决plt.show()
- Durable NAND flash memory management
- linux 下各errno的意义(转)
- PostgreSQL编码格式:客户端服务器、客户端、服务器端相关影响
- Docker部署前后端项目
- JAVA基础--JAVA API集合框架(其他集合类,集合原理)