您可以使用 GET 参数来跟踪您从哪个页面到达页面 z。因此,当您正常到达页面 z 时,我们会记住我们来自哪个页面。当您处理 z 页上的表单时,我们会使用之前保存的信息进行重定向。所以:
y 页上的按钮/链接应包含一个参数,其值为当前 URL:
<a href="/page_z/?from={{ request.path|urlencode }}" />go to form</a>
然后在 page_z 的视图中,您可以将其传递到模板上:
def page_z_view(self, request):
...
return render_to_response('mytemplate.html', { 'from' : request.GET.get('from', None) })
并在您的表单模板中:
<form action="{% if from %}?next={{ from }}{% endif %}" />
...
所以现在表单 - 当提交时 - 将传递next
参数,指示表单成功提交后返回到哪里。我们需要重新查看视图来执行此操作:
def page_z_view(self, request):
...
if request.method == 'POST':
# Do all the form stuff
next = request.GET.get('next', None)
if next:
return redirect(next)
return render_to_response('mytemplate.html', { 'from' : request.GET.get('from', None)}