问题:HttpResponse(statusu003d<code>) 在 django 中是如何工作的?

我正在 django 中试验 HTTP 错误代码,所以我有一个关于HttpResponse(status=<code>)的问题。比如我想发送一个HTTP错误码405,我有如下代码:

def myview(request):
   if request.method == 'POST':
      ...
   else:
      return HttpResponse(status=405)

我也有这个 HTTP 错误代码 (405.html) 的模板,并将以下代码行放在 urls.py

handler405 = 'handling_error.views.bad_method'

我的 bad_method 视图如下:

def bad_method(request):
    datos_template = {}
    return render(request, '405.html', datos_template, status=405)

我这样想Django根据HTTP错误代码重定向到正确的模板,但它不起作用,然后:

我做错了什么吗? HttpResponse(statusu003d) 在 django 中是如何工作的?通过 HttpResponse(statusu003d) 发送 HTTP 错误代码的目的是什么?

对不起,很多问题:P

我希望有一个人可以帮助我。

解答

HttpResponse(status=[code])只是在响应的标头中发送实际 HTTP 状态代码的一种方式。它以该状态_code 到达客户端,但除了 HTTP 标头外,不对数据进行任何更改。您可以传递任何带有正常响应的状态代码,它仍会像以前一样显示,但如果您进入浏览器的控制台,您会看到它读取为“405”页面。

HTTP 标头只是随每个请求和响应一起传输,用于 Web 服务器解析并向开发人员提供元数据/信息。甚至404页面也有内容发送,告诉用户有404;如果没有,用户只会得到一个空白页面并且不知道出了什么问题。

如果要表示错误,可以查看这些文档。或者,您可以使用HttpResponseRedirect(参见此处) 选项来定向到提供自定义错误响应的错误视图。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐