如何在ValidationError的情况下不进入错误页面,而是保持在原界面显示错误信息?
时间: 2024-03-27 08:36:28 浏览: 12
当出现 `ValidationError` 错误时,可以通过在视图函数中捕获这个异常并在模板中显示错误信息的方式来保持在原界面显示错误信息。
下面是一个示例代码:
```python
from django.shortcuts import render, redirect
from django.contrib import messages
from .forms import MyForm
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 处理表单数据
return redirect('success')
else:
# 捕获 ValidationError 异常,并将错误信息存储到 message framework 中
for field, errors in form.errors.items():
for error in errors:
messages.error(request, f"{field}: {error}")
else:
form = MyForm()
context = {'form': form}
return render(request, 'my_template.html', context)
```
在这个示例中,当表单数据无效时,我们捕获了 `ValidationError` 异常并将错误信息存储到 Django 的消息框架中。在模板中,我们可以使用 `messages` 模板标签来显示消息:
```html
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
```
这样,在表单提交后,如果出现错误,错误信息就会显示在原界面上,而不是跳转到错误页面。