Рекомендуемая практика Django для информации о сеансе

#django #session #django-views

#django #сессия #django-просмотры

Вопрос:

Где следует обрабатывать «материалы, связанные с сеансом». Например:

 # Set a session value:
request.session["fav_color"] = "blue"

# Get a session value -- this could be called in a different view,
# or many requests later (or both):
fav_color = request.session["fav_color"]
  

Должно ли это быть сделано в view ? в __init__ ? в model ? Что, если, например, я сохраняю большое количество переменных сеанса, к которым будут доступны несколько просмотров / страниц?

Ответ №1:

Ну, для сеанса требуется доступность объекта запроса. Итак, это в значительной степени требует, чтобы это обрабатывалось в представлении в той или иной форме или способом. Вся мантра «Толстая модель, тощий контроллер» имеет тенденцию отпугивать людей от выполнения многого в представлении (которое по сути является контроллером в Django). Однако руководство, которому следует следовать, заключается в том, что бизнес-логика принадлежит модели, но логика представления принадлежит представлению. Сеансы по своей сути связаны с представлением, поэтому я не вижу никаких проблем при работе с ними там.

Сколько данных вы храните в сеансе, довольно несущественно, по крайней мере, в том смысле, куда ведет логика. (Это имеет некоторое значение с точки зрения загрузки страницы и тому подобного.)