.Save()与django重定向

时间:2014-07-14 19:42:41

标签: django api templates save models

我使用的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"])

但是这种方式不会将网址更改回上一页,我需要它去做。有什么想法我可以做什么?

1 个答案:

答案 0 :(得分:0)

redirect(redirect_url, permanent=True)

permanent参数将发出301状态代码。这告诉浏览器该页面被永久移动。您的浏览器会保存此信息,下次您请求此页面时,您的浏览器甚至不会尝试获取旧页面(API视图),而是直接加载新网址(您的home视图)。

要解决此问题,请删除permanent=True参数,然后清除浏览器缓存。

执行使用重定向,而不是返回另一个视图函数的结果;如果不这样做,将导致数据在重新加载页面或按浏览器中的后退按钮时重新发送到服务器。