【问题标题】:Passing errors to redirected template in views.py in django将错误传递给django中views.py中的重定向模板
【发布时间】:2018-09-05 07:14:56
【问题描述】:

我正在使用 try except 来处理 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)" 调用模板

【问题讨论】:

标签: python django error-handling


【解决方案1】:

这是因为你不能传递上下文来重定向, 但是为了将错误传递给前端,您可以使用 django message 之类的东西

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/

【讨论】:

  • 完美的sky_1。这就是解决方案。非常感谢。
猜你喜欢
  • 2012-04-07
  • 2011-10-28
  • 2011-11-20
  • 2012-07-18
  • 2020-12-19
  • 2014-11-30
  • 2014-01-13
  • 1970-01-01
  • 2014-05-13
相关资源
最近更新 更多