【问题标题】:DJANGO: Redirect to a page based on a submitted data form (HttpResponseRedirect)DJANGO:根据提交的数据表单重定向到页面(HttpResponseRedirect)
【发布时间】:2015-02-08 17:59:57
【问题描述】:

我是 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.
...

【问题讨论】:

标签: django http redirect web response


【解决方案1】:

我不太清楚你为什么在那里使用正则表达式。您需要使用实际的 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)

【讨论】:

    【解决方案2】:

    您可以使用django.shorcuts.redirect

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多