render_to_response将URL连接到当前URL

时间:2011-11-09 10:28:15

标签: python django

我可以在单击索引页面中的锚点时删除记录。我想在运行此视图后重定向到当前页面。在urls.py中:

(r'^airAgency/(?P<key>[a-zA-Z0-9]+)/tour/delete/(?P<tour_id>\d+)/$','airAgency.views.deletetour'),
(r'^airAgency/(?P<key>[a-zA-Z0-9]+)/$','airAgency.views.index'),
在views.py中

def deletetour(request,key,tour_id):
   tour=Tour.objects.get(pk=tour_id)
   tour.delete()
   top5news=News.objects.filter(User__agentposition__AgentCode__id=agn.id).order_by('-ActionDate')[:5]
   return render_to_response('airAgency/index.html/',{'top5news':top5news},context_instance=RequestContext(request))

想象一下现在浏览器在这个地址:

http://127.0.0.1:8080/airAgency/mastane

当我点击锚点重定向我删除视图时,删除后记录,浏览器找到此网址:

http://127.0.0.1:8080/airAgency/mastane/tour/delete/4/airAgency/index.html/

但我想再次重定向到第一个网址:

http://127.0.0.1:8080/airAgency/mastane

请注意,我也需要RequestContext对象。我的意思是HttpResponseRedirect对我不好。

提前预订

3 个答案:

答案 0 :(得分:2)

如果您决定使用HttpResponseRedirect,请尝试以下操作:

return HttpResponseRedirect(request.META.get('HTTP_REFERER','/'))

答案 1 :(得分:1)

一旦您处于另一个网址的处理程序中,您无法在不重定向的情况下更改网址。如果您需要在返回时将状态保持在原始URL中,请将其编码为您要重定向回的URL的get参数。

另外,不确定你是否已经这样做了,但删除记录的确应该在POST中处理而不是get。

希望这有帮助!

答案 2 :(得分:1)

如果您需要RequestContext对象,只是为了显示一些删除成功消息,您可以使用 django.contrib.messages框架。