使用Django正确地将视图错误传递给模板

时间:2013-08-26 08:47:33

标签: django

如何使用干净且通用的方式传递错误以在模板中显示它们?

我想通过叠加框信息显示错误。

  • 为每次返回传输一个Error对象?
  • 在会话中推送它,并在模板中检查它?
  • 使用Ajax方法从模板检查?
  • 使用常见的错误模板页面? (用户不太友好..)

使用HttpResponseRedirect时我很困惑;除非使用会话变量,否则无法传递错误。

1 个答案:

答案 0 :(得分:9)

通常的方法是使用Django's message framework,就像Rohan说的那样。

您可以使用此代码将错误传递给模板:

from django.contrib import messages


def my_view(request):
    …
    messages.error(request, 'Oops, something bad happened')
    return redirect…

您可以在base.html模板中添加以下代码以显示这些消息(此处使用引导类):

{% if messages %}
<div class="span12">
{% for message in messages %}
    <div class="alert alert-{{ message.tags }}">
        {{ message|safe }}
    </div>
{% endfor %}
</div>
{% endif %}