Django在重定向后得到表单错误



我有一个显示一个人的详细信息的页面。在同一页面上,它还显示了这个人拥有的许多朋友。我有一个按钮,让我添加一个朋友的人,当我点击它,一个引导模式显示。

/person/10 (this is the person's page)
/person/10/add-friend (this is the POST endpoint to add a friend)

如果表单数据有效,则向该人员添加新好友并将其重定向回该人员详细信息页面。问题是,如果数据无效,我似乎无法获得重定向后的表单错误。

def add_friend(request, id=None):
person = get_object_or_404(Person, pk=id)
form = FriendForm(request.POST)
if form.is_valid():
# code to save the friend to the person
#here I want to send the form errors if the form failed, but don't think we can send context with redirect
return redirect('person_detail', id=person.pk)

许多人说,如果表单验证失败,我应该呈现人员详细信息页面并将表单作为上下文发送,但问题是,URL将是/person/10/add-friend而不是/person/10

我来自PHP/Laravel,做一些像我上面想要的东西只是太简单/基本,但我无法理解它应该如何在Django中完成。

如果您真的想坚持这种方法并重定向到person_detail并让用户纠正那里的错误,我认为您有两个选项将错误传递给person_detail:

A)使用会话

B)使用消息框架

A)您可以简单地像这样添加表单错误:

request.session['form_errors'] = form.errors.as_json()

B)您可以添加这样的消息:

from django.contrib import messages
messages.add_message(request, messages.INFO, 'There has been an error...')

然后在重定向页面的模板中像这样显示:

{% for message in messages %}
{{ message }}
{% endfor %}

相关内容

  • 没有找到相关文章

最新更新