我有一个简单的RedirectView:
class SetDefaultCustomerAccount(LoginRequiredMixin, RedirectView):
permanent = False
def get_redirect_url(self, *args, **kwargs):
# set default account)
print("FOOO!!!!!!!")
self.request.user.default_customer_account = get_object_or_404(CustomerAccount, id=self.kwargs['account_id'])
self.request.user.save()
return reverse("users:detail",
kwargs={"username": self.request.user.username})
通过路线呼叫:
# URL pattern for the setting a default customer account to a user
url(
regex=r'^set_default_account/(?P<account_id>[0-9]+)$',
view=views.SetDefaultCustomerAccount.as_view(),
name='set_default_account'
一个细节:我的用户模型中的'default_customer_account'ForeignKey是optionnal(null = True,blank = True)。
在我的数据中,我有两个CustomerAccount,ID为1和2。
当我获取'127.0.0.1:8000/users/set_default_account/2'时,我的代码没有打印'FOOO !!!!!!!“。与'127.0.0.1:8000/users/set_default_account/相同2' 。
虽然,我确信我在第一次通话中得到了正确的结果(即,记录用户的默认客户帐户已更改)。
问题是:RedirectView的行为是否有所不同,具体取决于调用的时间?
更新 使用Safari时一切正常,所描述的问题出现在firefox中。 有人有类似issue here(但这不能解决我的问题)。
答案 0 :(得分:0)
谢谢to this thread我发现Firefox正在缓存我的301重定向页面。
解决方案是在RedirectView中设置permanent = False,以便响应更改为302,Firefox不会将此重定向保存在缓存中。