【问题标题】:Django upload file : test request == POST or use decorator?Django 上传文件:测试请求 == POST 还是使用装饰器?
【发布时间】:2015-06-25 23:11:44
【问题描述】:

我刚刚在 django 文档中读到了这个:

请注意,request.FILES 仅在请求方法为 POST 时才会包含数据

在给出的示例中,他们确实这样做:

def upload_file(request):
    if request.method == 'POST':

我之前刚刚读过,我们可以使用 django 的一些装饰器,例如:

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

甚至有人叫@require_post()

这是一个关于语法的问题,我想知道:

  1. 如果我使用装饰器,如果我不是通过 POST 请求,它会在函数执行之前停止函数吗?
  2. 如果 1) 为 True,装饰器选项不是很“python 酷”吗?

提前致谢。

最佳

【问题讨论】:

    标签: python django


    【解决方案1】:

    django.views.decorators.http 中的装饰器可用于根据请求方法限制对视图的访问。如果条件不满足,这些装饰器将返回 django.http.HttpResponseNotAllowed。

    View decorators

    至于 2,if request.method == 'POST' 非常好,可以在基于函数的视图中使用。

    【讨论】:

    • 那么在这种情况下没有首选的方法吗?
    • 我会说限制特定请求类型的访问仅对设计 Web API 有用,在这种情况下您无法期望将使用哪种方法。通常,由于涉及文件,因此您只会期望 POST 请求,因此有人可能会争辩说即使 if 条件也是多余的。
    猜你喜欢
    • 2021-12-19
    • 2015-07-25
    • 2018-12-13
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2018-12-16
    • 2023-03-20
    • 2021-08-10
    相关资源
    最近更新 更多