Django 五——中间件、缓存、CSRF、信号、Bootstrap(模板)
内容概要:
1、Django的请求生命周期是怎么样的?
2、中间件
3、CSRF补充
4、信号
5、Bootstrap(模板)
1、Django的请求生命周期是怎么样的?
(即请求发起到返回都经历了什么?)
用户发起请求,经过中间件,到达路由系统,分发给views是凸函数,然后去数据库拿数据,去模板中拿模板,经过渲染,在经过中间件返回给用户。
2、中间件
用处:可用于做过滤器,过滤黑名单,适用于所有的请求都要处理的情况
(而只需要对某些请求做处理时,直接在views函数里面写装饰器即可)
自定义方法
md文件夹中==》hxl.py
from django.utils.deprecation import MiddlewareMixin class MyMiddlewareMixin(object): #将MiddlewareMixin类里面的东西拿过来复制一份,重命名类,
# 自己定义的中间件就继承重命名后的类,这样以后不管版本如何变化,都能这样来定义中间件
def __init__(self, get_response=None):
self.get_response = get_response
super(MyMiddlewareMixin, self).__init__() def __call__(self, request):
response = None
if hasattr(self, 'process_request'):
response = self.process_request(request)
if not response:
response = self.get_response(request)
if hasattr(self, 'process_response'):
response = self.process_response(request, response)
return response class HXL(MyMiddlewareMixin):
def process_request(self,request):
print('hxl-->process_request') def process_response(self,request, response):
print('hxl-->process_response')
return response class GYC(MyMiddlewareMixin):
def process_request(self,request):
print('gyc-->process_request') def process_response(self,request, response):
print('gyc-->process_response')
return response
settings.py里面
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',
'md.hxl.HXL',
'md.hxl.GYC',
]
urls.py里面
from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
]
views.py里面
from django.shortcuts import render,HttpResponse
def index(request):
print('test')
return HttpResponse('test!!!')
3、缓存(3种应用,5种配置)
(1)全站缓存:settings里面加两个中间件
(2)单独视图缓存
(3)视图函数里面的某一块缓存
4、CSRF(跨站伪造请求)
全站都用csrf时:
Form提交时:
(1)、需用render
(2)、{% csrf_token %}
ajax提交时:
(1)、在cookie中提取创始人斧头砍对应的随机字符串
(2)、设置请求头:
X-CSRFToken:cookie中取到得值
或用$.ajaxsetup
全站都不用,仅某几个用csrf,用装饰器@csrf_protect
全站都用,仅某几个不用csrf时,用装饰器@csrf_exempt
5、信号
Django内部定义的信号,可在制定的位置注入指定的操作
——内置信号:
a指定信号中注入函数
——自定义信号:
a创建信号
b指定信号中注入函数
c在程序中触发函数
6、Bootstrap(模板)——响应式+模板
即集成了css和js的文件夹
css——响应式:用@media,如container、栅(shan)格
js——应用:先引入jquery.js,再引入bootstrap.js
多看模板
参考博客:
wu.sir
http://www.cnblogs.com/wupeiqi/articles/5246483.html
Django 五——中间件、缓存、CSRF、信号、Bootstrap(模板)的更多相关文章
- WEB框架Django之中间件/缓存/CBV/信号
一Djano的中间件 1 中间件的概念 中间件顾名思义,是介于request与respose处理之间的一道处理过程,相对比较轻量级,并且全局上改变django的输入与输出.因为改变是全局, 所有需要谨 ...
- Django组件补充(缓存,信号,序列化)
Django组件补充(缓存,信号,序列化) Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑 ...
- Django学习之缓存和信号
Django学习之缓存和信号 一 缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views ...
- 【Django】中间件,csrf,缓存,信号
中间件(middleware) 描述:Middlewares 是修改 Django request 或者 response 对象的钩子. 在django中,中间件其实就是一个类,在请求到来和结束后,d ...
- Python开发【Django】:缓存、信号
缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache ...
- Django进阶之缓存和信号
一.缓存 简介 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者mem ...
- Django:中间件与csrf
一.中间件 什么是中间件 中间件有什么用 自定义中间件 中间件应用场景 二.csrf csrf token跨站请求伪造 一.中间件 什么是中间件 中间件顾名思义,是介于request与response ...
- Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板
Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东 ...
- Python之路-(Django(csrf,中间件,缓存,信号,Model操作,Form操作))
csrf 中间件 缓存 信号 Model操作 Form操作 csrf: 用 django 有多久,我跟 csrf 这个概念打交道就有久了. 每次初始化一个项目时都能看到 django.middlewa ...
随机推荐
- laydate 显示结束时间不小于开始时间
jsp: <div class="form-group"> <label >交易时间:</label> <input ...
- 一个容易被忽视的css选择器
之前学的的迷糊了,也不知道什么会什么不会了,跑去面试了.别人列出一堆css选择器,本以为选择器没啥的,结果到那个多类选择器翻车了,.a.b选择同时含a,b类名的,很尴尬所以回来仔细整理了一下.目前根据 ...
- IOS微信6.7.4输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置
近期在开发微信H5页面时碰到这个问题,如图,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,这也是ios的微信版本更新6.7.4之后才遇到的bug. 目前 ...
- uLua学习之数据交互(三)
前言 在上节中,大概谈了一下如何在lua脚本中调用unity3d中的方法来创建游戏物体,这只是很小的一个方面,uLua的优势在于对unity3d中C#语言的扩展和定制.那么如何扩展和定制呢?其中的数据 ...
- Linux、命令ps 各字段意思
参数: -A :所有的进程均显示出来,与 -e 具有同样的效用: -a : 显示现行终端机下的所有进程,包括其他用户的进程: -u :以用户为主的进程状态 : x :通常与 a 这个参数一起使用,可列 ...
- chrome中清除dns缓存
chrome中清除dns缓存 http://rss.code-mire.com/item/1005.htm web开发经常要做各种host绑定的切换,firefox下有个DNS Flusher插件,但 ...
- 交互ajax
原生的js封装ajax1.创建ajax对象var oAjax=new XMLHttpRequest();//不兼容IE6var oAjax=new ActiveXobject('Microsoft.X ...
- map 容器(copy)
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数: map<stri ...
- Mac Office 2016 卸载
https://support.office.com/zh-cn/article/%E5%8D%B8%E8%BD%BD-Office-2016-for-Mac-eefa1199-5b58-43af-8 ...
- JavaScript:理解worker事件api
如果你不是很了解Event事件,建议先看我上一篇随文javascript:理解DOM事件.或者直接看下文worker api. hack 首先,我们需要实例一个Worker的对象,浏览器会根据新创建的 ...