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. Oracle11gR2-聚簇因子浅析

    创建表t1,t2 SQL> conn n1/n1 Connected. SQL> SQL> SQL> create table t1 as select trunc(rownu ...

  2. docker学习记录1

    起因 现在自己学习微服务,服务器越来越多,虽然自己写了一些shell脚本来安装需要的软件,比如mysql,redis,jdk等等,但是还是好麻烦.希望学习docker能够快速安装部署这些东西. 记录一 ...

  3. 网卡流量监控脚本 ( Shell )

    #!/bin/bash # Traffic Monitor # author: Xiao Guaishou get_traffic_info(){ recv=`cat /proc/net/dev | ...

  4. axis2 webService开发指南(2)

    1  Axis2的简单WebService示例 1.1 新建一个web工程,创建一个类Greeting,用于当作webservice服务 代码如下: package amyservices; impo ...

  5. AspectJ的aop编程--切入点表达式

  6. JAVA中List的三个子类。

    JAVA中List的三个子类分别是:ArrayList,Vector,LinkList.下面就来比较一下他们的不同. ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高. Ve ...

  7. SpringBoot与Shiro的整合(单体式项目)

    1.包结构 2.jar包,配置文件,类 2.1pom.xml文件配置 <?xml version="1.0" encoding="UTF-8"?> ...

  8. vnpy自动化交易

    c++  python 写的自动化交易平台 期货ctp

  9. yii\bootstrap

    yii\bootstrap\ButtonDropdown <?php echo yii\bootstrap\ButtonDropdown::widget([ 'label' => 'Act ...

  10. java Jvm工作原理学习笔记

    一.         JVM的生命周期 1.       JVM实例对应了一个独立运行的java程序它是进程级别 a)     启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有pub ...