Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
在实际的工作中,可能由于需求,对某些请求,只限制发送GET请求或者POST请求,不能发送其它的请求,Django内置的视图装饰器可以给视图提供一些限制。比如这个视图只能通过GET的method访问等。
from django.views.decorators.http import require_http_methods
如果条件不满足, 这些装饰器将返回django.http.HttpResponseNotAllowed 。
django.views.decorators.http中的装饰器可以用于根据请求方法限制对视图的访问。
from django.http import HttpResponse
from django.views.decorators.http import require_http_methods
@require_http_methods(["GET", "POST"])
def view(request):
# I can assume now that only GET or POST requests make it this far
# ...
return HttpResponse("ok")
注意:请求方法应该是大写的
require_GET()
require_http_methods(['GET'])
用作装饰器,要求视图只接受GET方法。
require_POST()
require_http_methods(['POST'])
用作装饰器,要求视图只接受POST方法。
require_safe()
require_http_methods(["GET", "HEAD"])
用作装饰器,要求视图只接受GET和HEAD方法。这些方法通常被认为是"安全的",因为除了检索被请求的资源外,它们没有其它的重要操作。
注意:
Web服务器在不改变请求头headers的前提下会自动剥离响应HEAD requests的内容,因此可以在视图中像GET请求一样准确地处理HEAD requests。由于一些软件,例如链接检查器,依赖于HEAD请求,可能需要使用require_safe而不是require_GET。