render_to_response 将URL连接到当前URL

0 投票
3 回答
904 浏览
提问于 2025-04-17 05:56

我有一个功能,当我在首页点击一个链接时,可以删除一条记录。我想在执行这个功能后,重新跳转回当前页面。在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 个回答

1

如果你只是想用 RequestContext 对象来显示一些删除成功的消息,你可以使用 django.contrib.messages 这个框架。

1

一旦你在处理另一个网址的请求时,就不能直接改变这个网址,除非你进行重定向。如果你需要在返回到原来的网址时保持一些状态,可以把这些状态信息编码成网址的参数,放在你重定向回去的网址里。

另外,不知道你是否已经这样做了,但删除记录的操作应该用POST请求,而不是GET请求。

希望这些对你有帮助!

2

如果你决定使用 HttpResponseRedirect,可以试试这个:

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

撰写回答