HttpResponseRedirect 后会话数据丢失

Session data lost after a HttpResponseRedirect

我有这个设置会话变量的重定向视图。但就好像会话在被重定向到的视图被调用之前 flushed,因为整个会话在那里是空的。

(顺便说一句,这是真正的代码,我已经删除了一些东西来查找原因,但仍然找不到)。

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 开发环境。