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后台开发Django(会话控制)全部内容,希望文章能够帮你解决Python后台开发Django(会话控制)所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

猜你在找的Python相关文章

微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误。 —— Edsger Dijkstra 目录 本节我
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 目录 本节我们来介绍闭包与装饰器。 闭包与
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 —— Nicklaus Wirth 目录 从这句话程序 = 算法 +
微信公众号:码农充电站pro 个人主页: 当你选择了一种语言,意味着你还选择了一组技术、一个社区。 —— Joshua Bloch 目录 1,什么是计算机编码 编码 从一种形式 到另一种形式的过程,就
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了。 —— Norm Schryer 目录 前几节我们已经介绍
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 软件工程的目标是控制复杂度,而不是增加复杂性。 —— Dr. Pamela Zave 目录 我们在上
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢。 —— Roy Carlson 目录 Python 字典是另一种非常实用
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了。 —— Carig Zerouni 目录 前几节我们介