在500错误django自定义视图上扩展时出现错误

问题描述 投票:0回答:1

我试图通过将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个回答
0
投票

您的base.html可能期望某些上下文不会被默认500视图传递。从documentation

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

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

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

我认为选项1是首选选项,因为它可以确保始终显示500页。不利之处在于base.html中的任何更改,您可能也必须将其应用于500模板。

选项3是最不优选的,因为它带来500页无法渲染的最高风险,例如如果500是由于数据库不可用而引起的,并且您的自定义500视图尝试使用该数据库。

© www.soinside.com 2019 - 2024. All rights reserved.