发生错误时如何取消Django视图中的导航

2024-04-25 17:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做以下工作:

  1. 我正在显示view1和template1。有一个链接指向view2,rendering template2
  2. 用户单击链接
  3. 处理view2时,出现错误
  4. 现在有趣的部分来了:我想取消view2的呈现,激活一条错误消息,并显示以前的view1/template1(一种redirection,但不完全是),但是在view2中,我不知道我来自view1,而且我也可能没有view1呈现时的上下文

如何重新呈现view1,并在view2中生成错误消息,以便用户看到的唯一新事物是错误消息?完整的template1应该像以前一样呈现,包括用户输入的任何表单值。你知道吗

这与表单验证类似,但会发生在目标视图而不是表单视图中。你知道吗

这是可行的,还是我想做一些完全不可能的事?你知道吗


Tags: 用户视图消息表单目标链接错误事物
1条回答
网友
1楼 · 发布于 2024-04-25 17:32:42

似乎没有“中止”视图的方法,但可以通过以下模式获得所需的行为:

from django.contrib import messages
from django.shortcuts import redirect


def view1(request):
    if request.method == 'GET':
        initial_data = request.session.get('post_data', {})
        form = MyForm(initial=initial_data)
        ...


def view2(request):
    ...
    if error:
        request.session['post_data'] = request.POST
        messages.add_message(request, messages.ERROR, "Oops!")
        return redirect(request.META.get('HTTP_REFERER', '/'))

请参见this stack post了解为什么保存POST数据是痛苦的,以及这样做的其他方法。你知道吗

相关问题 更多 >

    热门问题