Django提供了几个可以应用于视图以支持各种HTTP特性的装饰器

Allowed HTTP

django.views.decorators.http里的装饰器可以根据请求方法限制对视图的访问。

require_http_methods

接收特定的HTPP 请求方法

from django.views.decorators.http import require_http_methods

@require_http_methods(["GET", "POST"])
def my_view(request):
# I can assume now that only GET or POST requests make it this far
# ...
pass

注意,请求方法应该是大写的

require_GET()

接收GET()请求

require_POST()

接收POST()请求

require_safe()

接收GET()和HEAD()请求

Conditional view processing

以下django.view .decorators.http中的decorator可用于控制特定视图上的缓存行为。

condition(etag_func=None, last_modified_func=None)

etag(etag_func)

last_modified(last_modified_func)

def latest_entry(request, blog_id):
return Entry.objects.filter(blog=blog_id).latest("published").published from django.views.decorators.http import condition @condition(last_modified_func=latest_entry)
def front_page(request, blog_id):
...

GZip compression

django.view .decorators.gzip中的decorator在每个视图的基础上控制了内容压缩。

gzip_page()

如果浏览器允许gzip压缩,则此装饰器将压缩内容。它相应地设置了Vary标头,以便缓存将其存储基于accept编码标头。

Vary headers

vary中的decorator可用于根据特定的请求头控制缓存。

vary_on_cookie(func)

vary_on_headers(*headers)

不同的标头定义了缓存机制在构建缓存键时应该考虑哪些请求标头。

Caching

django.views.decorators.cache 控制服务端和客户端缓存中的decorator。

cache_control(**kwargs)

这个装饰器通过添加所有关键字参数来修复响应的Cache-Control报头。

never_cache(view_func)

这个修饰符向响应添加了Cache-Control: max-age=0、no-cache、no-store、must-revalidate头,以指示永远不应该缓存页面。

django view 装饰器的更多相关文章

  1. Django - CBV装饰器实现用户登录验证

    一.使用Django自带的decorator 通常情况,使用 函数定义的view,可以直接使用 login_required 直接装饰 @login_required def index(reques ...

  2. python django 自定义 装饰器

    # -*-coding:utf-8-*- __author__ = "GILANG (pleasurelong@foxmail.com)" """ d ...

  3. django添加装饰器

    引入模块: from django.utils.decorators import method_decorator 添加:@method_decorator(func) from django.ut ...

  4. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  5. Django CBV装饰器 中间件 auth模块 CSRF跨站请求

    CBV添加装饰器 给CBV添加装饰器有三种方法,三种方法都需要导入模块: from django.utils.decorators import method_decorator 第一种直接在方法上面 ...

  6. django 使用装饰器验证用户登陆

    使用装饰器验证用户登陆,需要使用@method_decorator 首先需引用,method_decorator,并定义一个闭包 from django.utils.decorators import ...

  7. Django自定义装饰器

    装饰器模板: def decorator(func): def wrapper(*args,**kwargs): return func(*args,**kwargs) return wrapper ...

  8. Django 之装饰器实现登录认证

    def check_login(func): # 自定义登录验证装饰器 def warpper(request, *args, **kwargs): is_login = request.sessio ...

  9. 利用Django和装饰器做一个简单的修改密码页面

    view视图代码: from django.shortcuts import render,redirect from django.http import HttpResponse from PIL ...

随机推荐

  1. mfc对话框启动就直接隐藏在右下角显示托盘图标

    之前在网络上找了一份mfc对话框启动就直接隐藏窗体,在右下角显示托盘图标的demo 在win7下可以正常使用,但在win10上直接溢出,导致计算机跟注销似的崩溃现象. 后来找到原因是因为在OnInit ...

  2. Android MVP模式简单易懂的介绍方式 (一)

    Android MVP模式简单易懂的介绍方式 (一) Android MVP模式简单易懂的介绍方式 (二) Android MVP模式简单易懂的介绍方式 (三) 最近正在研究Android的MVP模式 ...

  3. C/C++快速入门

    sscanf与sprint 均在stdio.h头文件下 sscanf用法 sscanf(str, "%d", &n); // 将str中内容以"%d"的 ...

  4. inl文件介绍

    inl文件是内联函数的源文件.内联函数通常在C++头文件中实现,但是当C++头文件中内联函数过多的情况下,我们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头文件和实现文件中 ...

  5. 让低版本IE支持Html5的新语义标签

    HTML5能为我们做的事儿很多,最为可口的就是语义化标签的应用,如果你已经在Chrome或者其他支持HTML5的浏览器上用过它的牛x,那这篇文章对你一定有用,因为现在你也可以在IE上用到HTML5. ...

  6. go_内建变量类型

    bool, string (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr (uintptr 是指针) byte, rune(表示字符cha ...

  7. www请求用到的Unescape

    //发送请求          WWW w = new WWW(url); //web服务器返回          yield return w;        if (!string.IsNullO ...

  8. ios加载本地html

    UIWebView加载工程本地网页与本地图片 - (void)viewDidLoad { [super viewDidLoad]; NSString *filePath = [[NSBundle ma ...

  9. c++ 享元模式(flyweight)

    举个围棋的例子,围棋的棋盘共有361格,即可放361个棋子.现在要实现一个围棋程 序,该怎么办呢?首先要考虑的是棋子棋盘的实现,可以定义一个棋子的类,成员变量包括棋子的颜色.形状.位置等信息,另外再定 ...

  10. HowTo: Xen 4.1.3 Windows 8 HVM domU with Intel HD4000 VGA Passthrough on Debian Wheezy

    http://linux-bsd-sharing.blogspot.com/2012/10/howto-xen-413-windows-8-hvm-domu-with.html Update 05/0 ...