Django(十一)

django操作cookie和session

# session的默认过期时间是14天 '''在负载均衡中,如果使用session保存用户信息,会出现session共享问题?''' 那么, 如何解决上述问题? 常用的缓存数据库就是redis ''' 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 ''' '''在settings.py中配置''' SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认) SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认) SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)

CBV添加装饰器

from django.views import View from django.utils.decorators import method_decorator @method_decorator(login_auth, 'get') # 第二种方式添加 @method_decorator(login_auth, 'post') class IndexView(View): @method_decorator(login_auth) # 第三张方式给所有的方法添加装饰器 def dispatch(self, request, *args, **kwargs): return super().dispatch(request, *args, **kwargs) # @method_decorator(login_auth) # 第一种方式添加装饰器 def get(self, request): return HttpResponse('get') def post(self, request): return HttpResponse('post')

中间件

django给我们提供了7个中间件,在配置文件中查询 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] # 还支持我们自定义中间件 ''' 中间件用来干嘛: 1. 校验权限 2. 限制访问频率 3. 检查认证 ... ''' 步骤: 1. 在任何一个应用下面,创建一个py文件 2. 在py文件中写一个类必须要继承MiddlewareMixin 3. 中间写完之后,一定要到配置文件中注册中间件 需要我们掌握的 ''' 1. process_request 请求来的时候会走 2. process_response 请求走的时候会走 ''' from django.shortcuts import render, HttpResponse from django.utils.deprecation import MiddlewareMixin class Mydd1(MiddlewareMixin): def process_request(self, request): print('第一个process_request') return HttpResponse('第一个process_request') def process_response(self, request, response): print('第一个process_response') return response # 必须要返回一个response对象 class Mydd2(MiddlewareMixin): def process_request(self, request): print('第二个process_request') def process_response(self, request, response): print('第二个process_response') return response # 必须要返回一个response对象

csrf跨站请求

# 背景: 钓鱼网站 ''' 英语4级报名网站为例 你要在这个网站要付费,你去的这个网站是一个冒牌的网站,他就去冒牌网站里面付费了,前付到了冒牌网站,没有报名成功。 ''' 他会出现在form表单中,action参数:朝后端发送的地址 # 怎么解决这个问题? # csrf是针对与post请求的才会做验证 '''token相关的,一般都是一个串,秘钥, 私钥,公钥''' # 两种解决方式 {#data:{'a':1, 'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val()},#} data:{'a':1, 'csrfmiddlewaretoken': '{{ csrf_token }}'},

csrf相关装饰器

''' 如果使用中间件限制的话,他就会限制全局的,要么全部限制,要么全部不限制 只有index函数需要验证,其他的不需要验证 我只想让home函数不验证,其他的都需要验证 ''' 提供了2个装饰器 csrf_protect: 需要验证 csrf_exempt:不需要验证 ''' 按照FBV和CBV的使用即可 ''' from django.views.decorators.csrf import csrf_exempt,csrf_protect ''' 针对CBV: csrf_protect的三种方式都是可以的 csrf_exempt前两种方式都不行,只有第三种方式可以的 '''

Auth模块

# 迁移数据库会有一个表生成,auth_user # django项目创建完后之后,会有一个默认的路由,admin/ # admin/是django默认提供的后台管理界面 访问admin/登录参照的数据就是从auth_user表中来,前提是必须是超级管理员 # 如何创建超级管理员? python3 manage.py createsuperuser

__EOF__

本文作者祈安
本文链接https://www.cnblogs.com/jyc666/p/16095724.html
关于博主:没有收拾残局的能力,就别放纵善变的情绪
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   丶祈安  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示