Подтвердить что ты не робот

Получить request.session из универсального представления класса

Есть ли способ получить 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)

для класса. Но это кажется уродливым. Есть ли другой способ?

4b9b3361

Ответ 1

У вас есть доступ к self.request из любого места в классе (и, следовательно, self.request.session)

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

Ключевой частью этой работы является то, что при вызове на основе класса различные полезные вещи хранятся на себе; а также запрос (self.request), это включает в себя позиционные (self.args) и основанные на имени (self.kwargs) аргументы, захваченные в соответствии с URLconf.