内容概要:

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(模板)的更多相关文章

  1. WEB框架Django之中间件/缓存/CBV/信号

    一Djano的中间件 1 中间件的概念 中间件顾名思义,是介于request与respose处理之间的一道处理过程,相对比较轻量级,并且全局上改变django的输入与输出.因为改变是全局, 所有需要谨 ...

  2. Django组件补充(缓存,信号,序列化)

    Django组件补充(缓存,信号,序列化) Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑 ...

  3. Django学习之缓存和信号

    Django学习之缓存和信号   一 缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views ...

  4. 【Django】中间件,csrf,缓存,信号

    中间件(middleware) 描述:Middlewares 是修改 Django request 或者 response 对象的钩子. 在django中,中间件其实就是一个类,在请求到来和结束后,d ...

  5. Python开发【Django】:缓存、信号

    缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache ...

  6. Django进阶之缓存和信号

    一.缓存 简介 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者mem ...

  7. Django:中间件与csrf

    一.中间件 什么是中间件 中间件有什么用 自定义中间件 中间件应用场景 二.csrf csrf token跨站请求伪造 一.中间件 什么是中间件 中间件顾名思义,是介于request与response ...

  8. Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板

    Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东 ...

  9. Python之路-(Django(csrf,中间件,缓存,信号,Model操作,Form操作))

    csrf 中间件 缓存 信号 Model操作 Form操作 csrf: 用 django 有多久,我跟 csrf 这个概念打交道就有久了. 每次初始化一个项目时都能看到 django.middlewa ...

随机推荐

  1. 工作中遇到的有关echarts地图和百度地图的问题

    工作中遇到的有关echarts地图和百度地图的问题 *** 前言:在做项目中需要制作一个场景是左边是柱状图,右边是地图,地图上悬浮一个按钮可以切换echarts地图和百度地图.*** 功能: 在点击左 ...

  2. uvm_dpi——DPI在UVM中的实现(一)

    文件: src/dpi/uvm_dpi.svh 类:  无   SystemVerilog DPI,全称SystemVerilog直接编程接口 (英语:SystemVerilog Direct Pro ...

  3. WIN10+Ubuntu14.04 双系统 ubuntu无法有线上网的问题

    注:在WIN10 的引导下安装了双系统,ubuntu有线无法上网,无线却可以. 上网一查,发现之前许多安装双系统的人都存在以上的问题. 常见的解决方法是: 在WINDOWS下关闭网络唤醒,还有一些检查 ...

  4. C语言的一小步—————— 一些小项目及解析

    ——-------- 仅以此献给东半球第二优秀的C语言老师,黑锤李某鸽,希望总有那么一天我们的知识可以像他的丰臀一样渊博! bug跟蚊子的相似之处: 1.不知道藏在哪里. 2.不知道有多少. 3.总是 ...

  5. C++指针的概念解读

    C++指针的概念解读 超详细 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区 ...

  6. [转]Cannot deserialize the current JSON array (e.g. [1,2,3]) into type

    string content =[{"id": 3636, "is_default": true, "name": "Unit&q ...

  7. python_74_pickle反序列化

    import pickle def say(name):#序列化时用完会释放,要想反序列化,要重新写上该函数,否则会出错 print('我的高中', name)#可以和之前的序列化函数不同 f=ope ...

  8. 按格式读取csv文件内容

    string path = @"C:\Users\keen_\Downloads\upload\upload\Upload\20140701141934_export.csv"; ...

  9. Oracle 数字处理函数

    数字处理函数 ① mod(number1,number2) 取余数的函数,比如mod(10,3) = 10/3 = 1. ② round(number,num_ditigs) .trunk(numbe ...

  10. css中让元素隐藏的多种方法

    { display: none; /* 不占据空间,无法点击 / } { visibility: hidden; / 占据空间,无法点击 / } { position: absolute; top: ...