【问题标题】:Error while extending on 500 error django custom view扩展 500 错误 django 自定义视图时出错
【发布时间】:2020-06-16 09:28:50
【问题描述】:

我正在尝试通过将我的 500.html 文件放在模板文件夹中来为我的 django 应用程序定义一个自定义的 500 错误。

{% extends "base.html" %}
{% load static %}
{% block body %}

<div class="container"> 
    <div class="row">
      UPS, algo fue mal.
    </div>    
</div>

{% endblock %}

没有第一行(扩展网络的骨架)它可以工作,但是有了它我得到了这个消息:

A server error occurred.  Please contact the administrator.

我正在为 404 错误做同样的事情,而且我工作得很好。我完全迷路了。

【问题讨论】:

    标签: python django django-templates http-status-code-500


    【解决方案1】:

    您的base.html 可能需要一些默认 500 视图未传入的上下文。来自documentation

    默认的 500 视图不向 500.html 模板传递任何变量,并使用空的 Context 进行渲染以减少出现其他错误的机会。

    如果是这种情况,您可以:

    1. 为 500 视图创建一个单独的、最小且更可取的自包含模板
    2. 确保您的 base.html 在空上下文中正常工作或
    3. 创建一个自定义的 500 视图,传递所需的上下文

    我认为选项 1 是首选选项,因为它可以确保始终显示 500 页面。缺点是您的base.html 中的任何更改,您可能还必须应用到您的 500 模板。

    选项 3 是最不受欢迎的,因为它具有 500 页面不呈现的最高风险,例如如果 500 是因为 DB 不可用而导致的,并且您的自定义 500 视图尝试使用 DB。

    【讨论】:

    • 我明白了。这是正确的。所以我应该为那个特殊的错误创建一个无上下文的模板,对吧?
    • 请看我的扩展答案
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多