2015-11-16 23 views
2

我想做到以下几点:如何取消导航Django视图时发生错误时

  1. 我展示厂景,有模板1。有一个链接到视图2,呈现模板2
  2. 用户点击
  3. 当处理视图2,出现错误
  4. 现在来到了有趣的部分链接:我想取消view2的渲染,激活一个错误信息,并显示以前的厂景/模板1(一种redirection,但并不完全),但在视图2,我不知道,我是从厂景来了,我也可能没有,我不得不在厂景被渲染
上下文

如何重新呈现view1,并在view2中输出错误消息,以便用户只有新事物看到的是错误信息?应该像以前一样呈现完整的模板1,包括用户输入的任何表单值。

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

这是完全可行的,还是我试图做一些完全不可能的事情?

+0

你期待什么样的错误? –

+0

@DanielRoseman:让我们说在处理view2过程中发生异常 – dangonfast

回答

0

似乎没有为想“放弃”一个视图的方式,但你可以得到的行为要与以下模式:

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为什么保留数据是痛苦的,并且这样做的替代方式。