首页 > 其他分享 >django 1.8 官方文档翻译: 3-1-4 视图装饰器

django 1.8 官方文档翻译: 3-1-4 视图装饰器

时间:2023-04-13 14:36:28浏览次数:50  
标签:http GET require 1.8 视图 django 装饰


视图装饰器

Django为视图提供了数个装饰器,用以支持相关的HTTP服务。

允许的HTTP 方法

django.views.decorators.http 包里的装饰器可以基于请求的方法来限制对视图的访问。若条件不满足会返回 django.http.HttpResponseNotAllowed

require_http_methods(request_method_list)[source]

限制视图只能服务规定的http方法。用法:

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 方法的装饰器。 这些方法通常被认为是安全的,因为方法不该有请求资源以外的目的。

Django 会自动清除对HEAD 请求的响应中的内容而只保留头部,所以在你的视图中你处理HEAD 请求的方式可以完全与GET 请求一致。因为某些软件,例如链接检查器,依赖于HEAD 请求,所以你可能应该使用require_safe 而不是require_GET

可控制的视图处理

django.views.decorators.http 中的以下装饰器可以用来控制特定视图的缓存行为。

condition(etag_func=None, last_modified_func=None)[source]

etag(etag_func)[source]

last_modified(last_modified_func)[source]

这些装饰器可以用于生成ETag 和Last-Modified 头部;参考 conditional view processing.

GZip 压缩

django.views.decorators.gzip 里的装饰器基于每个视图控制其内容压缩。

gzip_page()

如果浏览器允许gzip 压缩,这个装饰器将对内容进行压缩。它设置相应的Vary头部,以使得缓存根据Accept-Encoding头来存储信息。

Vary 头部

django.views.decorators.vary 可以用来基于特定的请求头部来控制缓存。

vary_on_cookie(func)[source]

vary_on_headers(*headers)[source]

到当构建缓存的键时,Vary 头部定义一个缓存机制应该考虑的请求头。

参见使用vary 头部。

译者:Django 文档协作翻译小组,原文:Decorators

本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。


标签:http,GET,require,1.8,视图,django,装饰
From: https://blog.51cto.com/wizardforcel/6187981

相关文章

  • django 1.8 官方文档翻译: 3-1-3 Django 的快捷函数
    Django的快捷函数django.shortcuts收集了“跨越”多层MVC的辅助函数和类。换句话讲,这些函数/类为了方便,引入了可控的耦合。renderrender(request,template_name[,context][,context_instance][,content_type][,status][,current_app][,dirs][,using])[source]结合一个......
  • django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令
    编写自定义的django-admin命令应用可以通过manage.py注册它们自己的动作。例如,你可能想为你正在发布的Django应用添加一个manage.py动作。在本页文档中,我们将为教程中的polls应用构建一个自定义的closepoll命令。要做到这点,只需向该应用添加一个management/commands目录。Django......
  • django 1.8 官方文档翻译: 6-6-2 如何使用WSGI 部署
    如何使用WSGI部署Django首要的部署平台是WSGI,它是PythonWeb服务器和应用的标准。Django的startproject管理命名为你设置一个简单的默认WSGI配置,你可以根据你项目的需要做调整并指定任何与WSGI兼容的应用服务器使用。Django包含以下WSGI服务器的入门文档:如何使用Apache和......
  • django 1.8 官方文档翻译:6-5-1 Django中的测试
    Django中的测试自动化测试对于现代web开发者来说,是非常实用的除错工具。你可以使用一系列测试–测试套件–来解决或者避免大量问题:当你编写新代码的时候,你可以使用测试来验证你的代码是否像预期一样工作。当你重构或者修改旧代码的时候,你可以使用测试来确保你的修改不会在意料之......
  • django 1.8 官方文档翻译:2-5-9 条件表达式
    条件表达式NewinDjango1.8.条件表达式允许你在过滤器、注解、聚合和更新操作中使用if...elif...else的逻辑。条件表达式为表中的每一行计算一系列的条件,并且返回匹配到的结果表达式。条件表达式也可以像其它表达式一样混合和嵌套。条件表达式类我们会在后面的例子中使用下......
  • django 1.8 官方文档翻译: 2-5-7 自定义查找
    自定义查找NewinDjango1.7.Django为过滤提供了大量的内建的查找(例如,exact和icontains)。这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能。关于查找的API参考,详见查找API参考。一个简单的查找示例让我们从一个简单的自定义查找开始。我们会编写一个自定义查找ne,提供......
  • django 1.8 官方文档翻译: 2-5-10 数据库函数
    数据库函数NewinDjango1.8.下面记述的类为用户提供了一些方法,来在Django中使用底层数据库提供的函数用于注解、聚合或者过滤器等操作。函数也是表达式,所以可以像聚合函数一样混合使用它们。我们会在每个函数的实例中使用下面的模型:classAuthor(models.Model):name=model......
  • django 1.8 官方文档翻译: 3-3-4 管理文件
    管理文件这篇文档描述了Django为那些用户上传文件准备的文件访问API。底层的API足够通用,你可以使用为其它目的来使用它们。如果你想要处理静态文件(JS,CSS,以及其他),参见管理静态文件(CSS和图像)。通常,Django使用MEDIA_ROOT和MEDIA_URL设置在本地储存文件。下面的例子假设你使用这些默认......
  • Django 对实体的增删改查样例
    classUserInfo(models.Model):"""人员信息"""user_id=models.CharField(max_length=20,primary_key=True,blank=False,verbose_name='人员ID')user_name=models.CharField(max_length=200,blank=Fal......
  • django 配置admin 数据管理,增加数据批量上传下载功能
    在使用django-admin带来直接管理数据库带来的便利的同时,我们希望数据能批量上传,为了达到此目的,我们需要django-admin-export 模块一、安装模块pip3installdjango-import-export-ihttps://mirrors.aliyun.com/pypi/simple/二、settings.py注册模块INSTALLED_APPS=......