返回‘HttpResponseNotFoundd’和在Django中提出‘Http 404’有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)

显然,Django中有两种不同的返回404错误的方法:通过返回HttpResponseNotFound对象或通过引发Http404例外。在我的项目中使用前者时,Django的内部视图似乎主要使用后者。除了“例外是例外”的咒语外,这两种方式之间有什么区别,我应该使用哪一种呢?

提问于
用户回答回答于

Http404异常可能更灵活,因为它允许生成404,例如,从调用堆栈的更深层次的助手函数(可能是通常返回非-HttpResponse)并依赖于Python的异常传播,而不必创建HttpResponseNotFound并手动将其传回到你最初正在制作响应的位置。

用户回答回答于

HttpResponseNotFound就像正常人一样HttpResponse但它发送错误代码404。因此,应该由你在该视图中呈现适当的404页,否则浏览器将显示自己的默认值。

养大Http404异常将触发Django调用自己的404错误视图。实际上,这只不过是呈现404.html模板并使用HttpResponseNotFound事实上。但方便之处在于,随后在一个地方指定了模板(如果愿意的话,可以查看)。

扫码关注云+社区