HttpResponseRedirect django + facebook

时间:2009-05-25 07:53:37

标签: python django facebook

我有一个带2个按钮的表单。根据按钮单击用户是 采取不同的网址。 查看功能是:

friend_id = request.POST.get('selected_friend_id_list')

history = request.POST.get('statushistory')
if history:
    print "dfgdfgdf"
    return HttpResponseRedirect('../status/')

else:
    return direct_to_template(request, 'friends_list.fbml',
                          extra_context={'fbuser': user,
                                         'user_lastname':user_lastname,
                                         'activemaintab':activemaintab,
                                         'friends':friends,
                                         'friend_list':friend_list}) 

表示模板:

<input type="submit"  value="Calendar View" name="calendarview"/>
<input type="submit"  value="Status History" name="statushistory"/>
</form 

所以我的问题是页面没有重定向到网址。 如果我制作HttpResponseRedirect('../'),它会给我正确的页面 但网址没有改变。

当前页面=“friendlist / status / 所以提交表格后我的网址应该是frinedlist / list / 所以这应该工作HttpResponseRedirect('../ list /'),但url没有改变。 任何的想法? 我怎样才能解决这个问题 谢谢

2 个答案:

答案 0 :(得分:2)

“所以我的问题是页面没有重定向到网址。如果我制作HttpResponseRedirect('../'),它会给我正确的页面,但网址不会改变。”

通过“URL”我猜你的意思是“浏览器中显示的URL”。如果您的问题非常精确,这会有所帮助。

首先,您必须提供绝对URL。 http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseRedirect

从标准(RFC 2616,第14.30节)中可以清楚地看出,绝对URL是必需的。某些浏览器可能会容忍相对URL。有些人没有。

其次,你不应该在你的程序中的任何地方使用相对URL。

您应该使用reverse

from django.core.urlresolvers import reverse

def myview(request):
    theURL= reverse('path.to.viewFunction')
    return HttpResponseRedirect(theURL)

答案 1 :(得分:0)

为什么需要使用相对网址?你能不能使用绝对网址?