django重定向不重定向

时间:2013-09-06 19:53:12

标签: django redirect django-forms django-urls

我在视图中有以下形式逻辑:

if request.method == 'POST':
        form = MyForm(request.POST, request.FILES)
        if form.is_valid():

            my_form = form.save()                                          )
            print 'before redirect'
            redirect('customer:department-edit')
            print 'after redirect'

我的网址条目如下:

url(r'^departments/$', views.departments_view, name='department-edit'),

我得到以下输出:

before redirect
after redirect

为什么在提交表单后不会发生重定向?

1 个答案:

答案 0 :(得分:5)

您似乎忘记在return之前添加 redirect() 语句。

为什么需要return?因为redirect方法只是HttpResponseRedirect的快捷方式,所以它的行为与任何其他操作相同:它必须返回响应。

所以你的代码应该是这样的:

...
print 'before redirect'
return redirect('customer:department-edit')
print 'after redirect'
...

请参阅Django Documentation example:)