我使用的API会在重定向上一页之前将一些信息保存到用户个人资料中。它看起来像这样:
首先,加载&home = home / id'在feed.views
def home(request, id):
request.session["next"] = id
# do stuff to load the page, i.e. adding stuff to context dictionary
return render_to_response('home/' + id + '.html', context)
捕获API注册的视图:
def API(request):
user = request.user
# get some info from api here
user.save()
redirect_url = '/home/' + request.session["next"]
return redirect(redirect_url, permanent=True)
问题:这不会将信息保存到“用户”,但仍会重定向回“家庭/ ID”。我之前尝试过这个,实际上由于某种原因保存了信息:
def API(request):
user = request.user
# same stuff
user.save()
from feed.views import home
return home(request, request.session["next"])
但是这种方式不会将网址更改回上一页,我需要它去做。有什么想法我可以做什么?
答案 0 :(得分:0)
redirect(redirect_url, permanent=True)
permanent
参数将发出301状态代码。这告诉浏览器该页面被永久移动。您的浏览器会保存此信息,下次您请求此页面时,您的浏览器甚至不会尝试获取旧页面(API
视图),而是直接加载新网址(您的home
视图)。
要解决此问题,请删除permanent=True
参数,然后清除浏览器缓存。
请执行使用重定向,而不是返回另一个视图函数的结果;如果不这样做,将导致数据在重新加载页面或按浏览器中的后退按钮时重新发送到服务器。