HttpResponseRedirect 后会话数据丢失
Session data lost after a HttpResponseRedirect
我有这个设置会话变量的重定向视图。但就好像会话在被重定向到的视图被调用之前 flush
ed,因为整个会话在那里是空的。
(顺便说一句,这是真正的代码,我已经删除了一些东西来查找原因,但仍然找不到)。
class ActivateUserView(RedirectView):
def get(self, request, *args, **kwargs):
# activates user and redirects to listing
listing = Listing.objects.get(id=2)
request.session['test'] = 'icle'
print("Session set to: ", request.session.get('test', "Nothing!"))
return HttpResponseRedirect(reverse('listing-detail', kwargs={'pk': listing_pk, 'slug': listing.slug}))
上面的视图被重定向到:
class ListingDetailView(TemplateView):
template_name = "frontend/detail.html"
@method_decorator(ensure_csrf_cookie)
def get(self, request, *args, **kwargs):
print("Session data: ", request.session.get('test', "Nothing!"))
return super(ListingDetailView, self).get(request, *args, **kwargs)
在控制台中,我得到:
Session set to: icle
Session data: Nothing!
我已经用 django-debug-toolbar 进行了检查,到处都出现了异常,在重定向调用和视图之间的某个地方,所有会话数据都被删除了。
将 SESSION_COOKIE_SECURE
设置为 False(在我的开发设置中)解决了这个问题。我使用的是本地非 https 开发环境。
我有这个设置会话变量的重定向视图。但就好像会话在被重定向到的视图被调用之前 flush
ed,因为整个会话在那里是空的。
(顺便说一句,这是真正的代码,我已经删除了一些东西来查找原因,但仍然找不到)。
class ActivateUserView(RedirectView):
def get(self, request, *args, **kwargs):
# activates user and redirects to listing
listing = Listing.objects.get(id=2)
request.session['test'] = 'icle'
print("Session set to: ", request.session.get('test', "Nothing!"))
return HttpResponseRedirect(reverse('listing-detail', kwargs={'pk': listing_pk, 'slug': listing.slug}))
上面的视图被重定向到:
class ListingDetailView(TemplateView):
template_name = "frontend/detail.html"
@method_decorator(ensure_csrf_cookie)
def get(self, request, *args, **kwargs):
print("Session data: ", request.session.get('test', "Nothing!"))
return super(ListingDetailView, self).get(request, *args, **kwargs)
在控制台中,我得到:
Session set to: icle
Session data: Nothing!
我已经用 django-debug-toolbar 进行了检查,到处都出现了异常,在重定向调用和视图之间的某个地方,所有会话数据都被删除了。
将 SESSION_COOKIE_SECURE
设置为 False(在我的开发设置中)解决了这个问题。我使用的是本地非 https 开发环境。