Django(十一)
2022/5/25 23:23:53
本文主要是介绍Django(十一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Django(十一)
csrf相关装饰器
# 在后端视图层可以加装饰器实现开启,关闭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方法装)
基于中间件思想编写项目
# 通过字符串形式导入模块 importlib模块 eg: import importlib res = 'test' ret = importlib.import_module(res) print(ret) '''导入的最小单位是py文件''' '''以发送提示信息为需求 编写功能''' 方式1:封装成函数 方式2:封装成配置 import settings import importlib # 1.获取配置信息 for i in settings.MODEL_URLS: # 2.地址拆分 model_path,class_name = i.rsplit('.') # 3.导入模块 res = importlib.import_module(model_path) # 4.利用反射获取类 class_name_str = getattr(res,class_name) # 5.实例化对象 obj = class_name_str() # 6.调用函数 obj.send(f'{class_name}:你好啊')
auth认证模块
# django提供给你快速完成用户相关功能的模块 用户相关功能:创建、认证、编辑... # django也配套提供了一张'用户表' 执行数据库迁移命令之后默认产生的auth_user # django自带的admin后台管理用户登录参考的就是auth_user表 创建admin后台管理员用户:run manage.py task>>:createsuperuser 自动对用户密码进行加密处理并保存
auth模块方法大全
from django.contrib import auth # 1.验证用户名和密码是否正确 auth.authenticate() '''校验正确返回用户对象,错误返回None''' # 2.保存用户登录状态 auth.login() '''自动记录session''' # 3.获取当前用户对象 request.user ''' 如果有用户登录返回用户对象 没有登录返回AnonymousUser ''' # 4.判断当前用户是否登录 request.user.is_authenticated() '''登录返回Ture,没登录返回False''' # 5.校验登录装饰器 from django.contrib.auth.decorators import login_required '''没有用户登录默认跳转到/accounts/login/页面,也可以自己定义''' # 局部配置 @login_required(login_url='/login/') # 全局配置 @login_required LOGIN_URL = '/login/' # 需要在配置文件中添加配置 # 6.修改密码 request.user.check_password() # 比较原密码是否正确,自动加密再比较 request.user.set_password() # 修改密码 request.user.save() # 保存数据 # 7.注销登录 auth.logout(request) # session失效 # 8.注册用户 from django.contrib.auth.models import User User.objects.create_superuser() # 注册超级管理员 User.objects.create_user() # 注册普通用户
auth扩展表字段
# 方式1:编写一对一表关系(了解) # 方式2:类继承(推荐) from django.contrib.auth.models import AbstractUser class Users(AbstractUser): # 编写AbstractUser类中没有的字段 不能冲突!!! phone = models.BigIntegerField() addr = models.CharField(max_length=32) AUTH_USER_MODEL = 'app01.Users' """ 1.类继承之后 需要重新执行数据库迁移命令 并且库里面是第一次操作才可以 2.auth模块所有的方法都可以直接在自定义模型类上面使用 自动切换参照表 """
这篇关于Django(十一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南