1. session、cookie和中间件使用

时间:2019-08-22
本文章向大家介绍1. session、cookie和中间件使用,主要包括1. session、cookie和中间件使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
cookie
读cookie request.COOKIE["username"] = "fu"
写cookie response.set_cookie("username", "fu")
删cookie response.delete_cookie('username')
参数
key: 键
value: 值
max_age:过期时间
expires:过期的具体时间
path: 生效路径
domain: 生效的域名
secure: HTTPS传输时应设置为true
httponly: 仅用于传输http, JavaScript无法获取(限制JavaScript的用处)
session
读session request.session.get("session")
写session request.session["username"] = "fu"
删session指定    del request.session["键"]
清session所有    request.session.flush( )
session表位置: "django.contrib.sessions.middleware.SessionMiddleware"
设置存储方式为数据库:SESSION_ENGING = "django.contrib.sessions.backends.db"
用户认证组件
django自带用户表 auth_user user和password取自request中的post
1. auth = authenticate(username=user, password=pwd) 
去auth_user中查找如果有信息返回user对象 如果不存在返回None  于是引出下列方法
2. auth.login(request, auth)  用户登录
3. auth.logout(request)   用户登出
4. user = User.obje.create_user(username=user, password=pwd)   
User来自from django.contrib.auth.models import User  创建用户
中间件
request和response之间的处理过程
浏览器 --->  wsgi.py --->  中间件  --->   url控制器   --->   视图函数   --->   后续操作
自定义的配置 MIDDLEWARE = "uyils.middleware.PrintIpMiddleware"
创建一个文件夹 utils  文件middlewares.py 
 
class PrintIpMiddleware:
    def process_request(self, request):  # 硬性条件 必须process_xxxx
        print(你想干的事情)
返回的中间件必须返回return response
应用:拦截(request.path in ['/login/', 'all'])
request.user.is_authencated    登录为true  没登录为false 
中间件函数执行顺序 :
m1 process_request ---> m2 process_request  ---> m2 process_response  --->  m1 process_response
 
 
其他中间件 
process_view   顺序
process_request -->   url  --->   process_view   --->   视图函数   --->  process_response
 
process_exception  顺序 
process_request -->   url  --->   视图函数  --->   process_exception --->  process_response
应用案例  某些ip访问服务器是否    过高 进行拦截限制每分钟不能超过20次
待添加:

原文地址:https://www.cnblogs.com/fuyi2345/p/11395626.html