将错误传递到Django的views.py中的重定向模板

时间:2018-09-05 07:14:56

标签: python django error-handling

我正在使用try来处理views.py中的错误。 在例外区域中,如果发生错误,我想将用户重定向到模板。 重定向到模板时,我想将错误传递给模板并在该页面的开头显示错误。

    try:
        car.delete()
    except ProtectedError, e:
        return redirect(reverse('car-operations') + '?car_no=' + str(car.car_no), {'errors': e})

当我尝试删除汽车时,发生ProtectError。但是此错误不会传递到重定向页面。在转载的页面中,我使用以下代码显示错误。

    {% if errors %}<div class="alert alert-danger">{{ errors }}</div>{% endif %}

我看到发生错误。但是我无法将其传递给模板。如果我使用渲染请求,则可以将错误传递给模板,但是这次我无法使用“'?car_no ='+ str(car.car_no)”调用模板

1 个答案:

答案 0 :(得分:1)

这是因为您无法传递上下文进行重定向, 但是为了将错误传递到前端,您可以使用django消息之类的东西

from django.contrib import messages
try:
    car.delete()
except ProtectedError, e:
  messages.add_message(request, messages.ERROR, e)

并在模板中显示您使用此错误

{% if messages %}
<ul class="messages">
   {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
  {% endfor %}
 </ul>
    {% endif %}

作为参考,您可以查看https://docs.djangoproject.com/en/2.1/ref/contrib/messages/