从基于类的通用视图中获取request.session

时间:2012-03-27 23:22:45

标签: django django-views

有没有办法从基于类的视图中获取request.session

例如,我有

from django.views.generic.edit import FormView

class CreateProfileView(FormView):
    def form_valid(self, form):
        # --> would like to save form contents to session here

        return redirect(self.get_success_url())

我唯一能想到的就是通过添加

覆盖as_view
def as_view(self, request, *args, **kwargs):
    self.session = request.session
    super(CreateProfileView, self).as_view(request, *args, **kwargs)

上课。但这看起来很难看。还有另一种方式吗?

1 个答案:

答案 0 :(得分:54)

您可以从班级中的任何位置访问self.request(因此self.request.session

https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#dynamic-filtering

  

使这项工作的关键部分是,当调用基于类的视图时,各种有用的东西都存储在self上;以及请求(self.request),这包括根据URLconf捕获的位置(self.args)和基于名称的(self.kwargs)参数。