csrf相关装饰器+中间件思想编程+auth认证模块
2022/5/26 1:50:01
本文主要是介绍csrf相关装饰器+中间件思想编程+auth认证模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- csrf相关装饰器
- 导入模块
- 针对FBV
- 针对CBV
- 模块导入
- 常规导入方式
- 字符串导入方式
- 基于中间件思想编写项目
- auth认证模块
- 导入模块
- 方法大全
- 扩展表字段
csrf相关装饰器
导入模块
from django.views.decorators.csrf import csrf_exempt,csrf_protect
csrf_exempt
:忽略csrf校验
csrf_protect
: 开启csrf校验
针对FBV
@csrf_protect\@csrf_exempt def login(request): return render(request,'login.html')
针对CBV
csrf_protect 三种CBV添加装饰器的方式都可以 csrf_exempt 只有一种方式可以生效(给重写的dispatch方法装)
模块导入
常规导入方式
from ccc import b print(b) # <module 'ccc.b' from '/Users/jiboyuan/PycharmProjects/day61_1/ccc/b.py'>
字符串导入方式
常出现在源码中
import importlib module_path = 'ccc.b' # 最小导入单位是模块文件级别 res = importlib.import_module(module_path) print(res) # <module 'ccc.b' from '/Users/jiboyuan/PycharmProjects/day61_1/ccc/b.py'>
基于中间件思想编写项目
'''以发送提示信息为需求 编写功能''' 方式1:封装成函数 方式2:封装成配置 import settings import importlib def send_all(msg): # 1.循环获取配置文件中字符串信息 for str_path in settings.NOTIFY_FUNC_LIST: # 'notify.email.Email' # 2.切割路径信息 module_path, class_str_name = str_path.rsplit('.', maxsplit=1) # ['notify.email','Email'] # 3.根据module_path导入模块文件 module = importlib.import_module(module_path) # 4.利用反射获取模块文件中对应的类名 class_name = getattr(module, class_str_name) # Email Msg QQ # 5.实例化 obj = class_name() # 6.调用发送消息的功能 obj.send(msg)
auth认证模块
django提供的快速完成用户相关功能的模块,用户相关功能:创建、认证、编辑...
django也配套提供了一张'用户表',执行数据库迁移命令之后默认产生的auth_user
django自带的admin后台管理用户登录参考的就是auth_user
表,创建admin后台管理员用户
run manage.py task>>: createsuperuser
自动对用户密码进行加密处理并保存
导入模块
from django.contrib import auth
方法大全
1.验证用户名和密码是否正确 auth.authenticate() 2.保存用户登录状态 auth.login() 3.获取当前用户对象 request.user 4.判断当前用户是否登录 request.user.is_authenticated() 5.校验登录装饰器 from django.contrib.auth.decorators import login_required @login_required(login_url='/lg/') # 局部配置 @login_required # 全局配置 LOGIN_URL = '/lg/' # 需要在配置文件中添加配置 6.修改密码 request.user.check_password() request.user.set_password() request.user.save() 7.注销登录 auth.logout(request) 8.注册用户 from django.contrib.auth.models import User User.objects.create_superuser() User.objects.create_suser()
扩展表字段
方式1:编写一对一表关系(了解) 方式2:类继承(推荐) from django.contrib.auth.models import AbstractUser class Users(AbstractUser): # 编写AbstractUser类中没有的字段 不能冲突!!! phone = models.BigIntegerField() addr = models.CharField(max_length=32) # settings.py AUTH_USER_MODEL = 'app01.Users' """ 1.类继承之后 需要重新执行数据库迁移命令 并且库里面是第一次操作才可以 2.auth模块所有的方法都可以直接在自定义模型类上面使用 自动切换参照表 """
这篇关于csrf相关装饰器+中间件思想编程+auth认证模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享