为啥django不处理PUT方法带过来的表单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥django不处理PUT方法带过来的表单相关的知识,希望对你有一定的参考价值。

参考技术A django 一般是用template来做页面的,如何编写模板和调用模板请参考:

http://djangobook.py3k.cn/chapter04/

当然如果页面里不用加载数据的话你可以直接写个静态的html页面。
“设置文本框默认有字,点修改按钮可以把文本框中的字改变。”这些要求在HTML里写个简单的脚本就行了(模板和HTML差不多的,模板不一样的地方就是用编地方需要服务器填充数据)。

为啥 Django 没有 405 的错误页面处理程序 - 方法不允许?

【中文标题】为啥 Django 没有 405 的错误页面处理程序 - 方法不允许?【英文标题】:Why Django doesnt have Error Page Handler for 405 - Method Not Allowed?为什么 Django 没有 405 的错误页面处理程序 - 方法不允许? 【发布时间】:2018-08-16 03:54:59 【问题描述】:

当我阅读 Django 文档时,我发现只有以下处理程序: 400, 403, 404, 500 个错误。

为什么 405 错误处理程序不存在,但像 require_POST() 这样的装饰器却很常见?

关键是,为 Method Not Allowed 错误创建自定义错误页面的正确方法是什么?


我使用 Django 中间件解决了我的问题,也许这会对某人有所帮助

from django.http import HttpResponseNotAllowed
from django.shortcuts import render


class HttpResponseNotAllowedMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)

        if isinstance(response, HttpResponseNotAllowed):
            return render(request, '405.html', status=405)

        return response

【问题讨论】:

检查这个 - ***.com/questions/22983222/… 问题不是我有 405 错误的原因 - 我知道为什么。问题是如何处理自定义错误页面的 405 错误。 您可以创建自定义处理程序 - 如果您使用 Django Rest Framework 之类的 django-rest-framework.org/api-guide/exceptions 或使用类似 medium.com/@mwhitt.w/… 的方法 - 创建自定义处理函数并在那里分配状态。 【参考方案1】:

如果您想为每个视图提供不同的响应,您可以覆盖您的函数,例如:

class someView(View):
    ....

    def http_method_not_allowed(self, request, *args, **kwargs):
        return HttpResponse("Not available")

如果你想知道函数的作用,请查看https://github.com/django/django/blob/master/django/views/generic/base.py#L90

【讨论】:

以上是关于为啥django不处理PUT方法带过来的表单的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Django 中的只读表单字段是个坏主意?

为啥 Django 的 HTTPResponseRedirect 使用相同的 HTTP 方法进行 PUT 而不是 POST?

如果这个 django 表单本身也生成选项,为啥它不接受我的输入?

为啥在 Django 的登录表单中显示错误?

restful有几种请求,表单如何提交put请求

Django中使用表单