Python后台开发Django(会话控制)

前端之家收集整理的这篇文章主要介绍了Python后台开发Django(会话控制)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

页面跳转

页面跳转的url中必须在最后会自动添加【\】,所以在urls.py的路由表中需要对应添加【\】

from django.shortcuts import redirect #导入
return redirect("admin/") 本地页面跳转
https://www.cnblogs.com/dongxiaodong/其他网站跳转

本地跳转需要参考urls.py的路由表

urlpatterns = [
    path('',admin.site.urls),path(dong/",views.homex),添加URL对应关系
]

Cookie

设置cookie

 1  本地页面跳转
 2 import redirect   导入
 3 retx = redirect(")
 4  返回文件,并匹配值
 5 import render  6 retx= render(requestx,loginx.htmldongkk1":替换值1dongkk2替换值2}) 
 7 返回字符串
 8 import HttpResponse
 9 retx=HttpResponse(东小东【dongxiaodong】10 设置cookie
11 retx.set_cookie(dnamedongxiaodong12 retx.set_cookie(dname2dongxiaodongxx设置超时时间,单位为秒
13 
14 return retx

获取cookie

dnamex=requestx.COOKIES.get(")

删除

设置cookie的超时时间为过去时间即可

Cookie加密

retx.set_signed_cookie(dong3dongxiaodong33任意字符串(密文)cookie通过密文加密
dnamex3 = requestx.get_signed_cookie(对应设置cookie时的密文")   获取cookie

Session

依赖于cookie的sessionid的随机字符串,默认超时时间为浏览器不退出情况下的两周或者浏览器退出就立即失效

设置

requestx.session[dongss"]=dongxiaodongsss
requestx.session.set_expiry(60*60)设置超时时间,单位为秒

获取

dnamex = requestx.session[]
dnamex = requestx.session.get(")无该键时程序不会报错
ssid = requestx.session.session_key 得到sessionid,值与cookie保存的相同

删除

del requestx.session[]
requestx.session.clear() 清空所有session

相关配置(setting.py)

 1 SESSION_COOKIE_NAME=sessionid"          Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
 2 SESSION_COOKIE_PATH=/"                   Session的cookie保存的路径(默认)
 3 SESSION_COOKIE_DOMAIN = None              Session的cookie保存的域名(默认)
 4 SESSION_COOKIE_SECURE = False             是否Https传输cookie(默认)
 5 SESSION_COOKIE_HTTPONLY = True            是否Session的cookie只支持http传输(默认)
 6 SESSION_COOKIE_AGE = 1209600               Session的cookie失效日期(2周)(默认)
 7 SESSION_EXPIRE_AT_BROWSER_CLOSE = False    是否关闭浏览器使得Session过期(默认)
 是否每次请求都保存Session,默认修改之后才保存(默认)
 9 如果SESSION_SAVE_EVERY_REQUEST = True时,可以配合requestx.session.set_expiry(60*60),实现无操作一分钟后页面session清除,页面失效
10 SESSION_SAVE_EVERY_REQUEST = False

中间件

所有的请求都会先进入中间件处理,执行完所有中间件(MIDDLEWARE = [ ])才会进入urls.py进行路由,然后进入对应的APP的views.py中执行逻辑处理,中间件可以获取到请求的任意数据,可以做一些IP黑名单等处理

CSR保护

Post提交数据时,Django自动会进行CSR验证,在POST提交数据端需要提交一条随机字符串,服务器会匹配其的内容

设置是否需要全局csr保护

 

全局设置:

需要在setting.py设置MIDDLEWARE = [ ],

如果注释【'django.middleware.csrf.CsrfViewMiddleware',】则表示不用验证,反之

 

部分设置(优先级高):

在APP对应views.py下添加函数装饰器即可实现

from django.views.decorators.csrf  csrf_exempt,csrf_protect
@csrf_protect  强制添加保护
def xx1(requestx):
   pass
@csrf_exempt   强制取消保护
 xx2(requestx):
   pass

Form表单里的post请求:

<form action="" method="post">
    {% csrf_token %}
    input type="text" name="xx">
    ="submit" value="提交了">
</form>

Ajax里的post请求,需要获取cookie的csrf值,并以请求头的方式发送到服务器

headers:{X-CSRFtoken":$.cookie(csrftoken")},

添加中间件

在工程下建立任意名字的文件夹,然后在文件夹中建立任意名字的python文件,如在工程同名目录下建立ruledong.py文件

from django.utils.deprecation  MiddlewareMixin
自定义中间件1
 3 class Dong1(MiddlewareMixin):
 4      process_request(self,requestx):
 5         print(dong1111111 6         你的设备基本信息:HTTP_USER_AGENTw))
 7         你的IP地址:REMOTE_ADDR自定义中间件2
 Dong2(MiddlewareMixin):
10     11         dong2222222212         if requestx.GET.get(idx") != 4:
13              返回字符串,以此为终点,中断所有
14             15             return HttpResponse(东小东【请求失败】")

在setting的MIDDLEWARE = [ ]的最后添加添加规则为前面的先被执行

dongjg.ruledong.Dong1dongjg.ruledong.Dong2',

猜你在找的Python相关文章