Получить 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)
для класса. Но это кажется уродливым. Есть ли другой способ?
Ответы
Ответ 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.