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 ...
随机推荐
- spring mvc 的理解
1.Spring MVC是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基 ...
- 爬虫技术-httpClent+jsoup
技术:httpClent+jsoup 任务:利用httpClent爬去网站信息,在利用jsoup解析 方法说明: parseUrl(String url):传入相应的url返回该网页内容,网页必须是h ...
- lattice diamond fpga 状态机的理解
比如序列检测101,需要三个状态 :so,s1,s2. 思路:(1)s0状态有两种情况0或1,若为0时在自身打圈,是1时进入s1状态. (2)s1状态有两种0或1,若为1自身打圈,因为1可以作为下次检 ...
- 提升Web性能的8个技巧总结
提升Web性能的8个技巧总结 在互联网盛行的今天,越来越多的在线用户希望得到安全可靠并且快速的访问体验.针对Web网页过于膨胀以及第三脚本蚕食流量等问题,Radware向网站运营人员提出以下改进建议, ...
- kubernetes-配置管理(十一)
Secret https://kubernetes.io/docs/concepts/configuration/secret/ Secret解决了密码.token.密钥等敏感数据的配置问题,而不需要 ...
- 自动生成 WebApi 在线说明文档。
1.使用Swashbuckle实现 Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置.再通过SwaggerUI 显示出来.类库中已 ...
- Bootstrap 警告框(Alert)插件
警告消息大多来是用来向终端用户提示警告或确认的消息,使用警告框插件,您可以向所有的警告框消息添加取消功能. 用法 您有以下两种方式启用警告框的可取消功能. 1.通过data属性:通过数据添加可取消功能 ...
- 学习笔记 | java反序列化漏洞分析
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized ...
- 三、MySQL PHP 语法
MySQL PHP 语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP. 在这些语言中,Mysql在PHP的web开发中是应用最广泛. 在本教程中我们大部分实例 ...
- nuxt.js服务端缓存lru-cache
对于部分网页进行服务端的缓存,可以获得更好的渲染性能,但是缓存又涉及到一个数据的及时性的问题,所以在及时性和性能之间要有平衡和取舍. 官方文档里面写的使用方法 按照这个配置,试过了没什么用,但是从文档 ...