页面跳转
页面跳转的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',
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。