DJANGO:根据提交的数据表单重定向到页面(HttpResponseRedirect)

时间:2014-12-10 13:52:47

标签: django http redirect web response

我是django的新手,我试图根据提交的数据表单重定向到一个页面,但没有运气。有没有我可以通过的HttpReponseRedirect方法或只是语法不对?我试着搞清楚但却失败了。

views.py

...
def select_bar(request):
    if request.method == 'POST':
        form = SelectBarForm(request.POST)
        if form.is_valid():
            bar = form.cleaned_data['bar']
            bar_name = str(bar.name)
            return HttpResponseRedirect('/bars/(?P<bar_name>\w+)/')
            # return HttpResponseRedirect('/')
    else:
        form = SelectBarForm()
        return render_to_response('bars_templates/bars.html', {'form': form}, RequestContext(request))
    ...

urls.py

...
urlpatterns += patterns('bars.views', (r'^bars/$', 'select_bar'),)
urlpatterns += patterns('songs.views', (r'^bars/(?P<bar_name>\w+)/$', 'songs'),) # capture the bar name from the url.
...

2 个答案:

答案 0 :(得分:2)

我不太清楚为什么你在那里使用了正则表达式。您需要使用实际的URL:

return HttpResponseRedirect('/bars/%s/' % bar_name)

甚至更好地使用接受视图名称和相关参数的reverse函数

return HttpResponseRedirect(reverse('songs.views.songs', bar_name=bar_name))

或甚至更好,使用同时进行反转和重定向的redirect函数:

return redirect('songs.views.songs', bar_name=bar_name)

答案 1 :(得分:0)

您可以使用django.shorcuts.redirect

return redirect('songs.views.songs', bar_name=bar_name)

这将导致重定向到您的视图函数songs.views.songs,并将bar_name作为关键字参数传递。