Django: сделать переменную постоянной - PullRequest
1 голос
/ 24 августа 2011

В основном я хочу сделать переменную перситентной в Django, и я не знаю, как.

Если быть более точным, я хочу, чтобы пользователь выбирал конкретный проект при входе на сайт (например, через ChoiceField). Затем, пока он не выберет другой проект, сайт «знает», какой проект он выбрал, чтобы он мог выполнять некоторые действия, связанные с этим проектом.

Как это возможно? Переменные сессий - путь? А может кеш системы? Несколько советов будет принята с благодарностью:)

Пожалуйста, дайте мне знать, если я не достаточно ясен

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Да - вы захотите использовать переменную сеанса, поскольку они сохраняются, но только для пользователя. Кеш будет сохраняться для всех пользователей.

Проверьте это: 'Как использовать сеансы' из документации Django.

По сути, вам просто нужно установить механизм сессии в settings.py:

SESSION_ENGINE = 'django.contrib.sessions.backends.cookies'

И тогда в представлении вы можете сделать это:

request.session['project'] = 'Some Project'

И в шаблонах вы можете использовать:

{{ request.session.project }}
1 голос
/ 24 августа 2011

Сеанс хорош, пока хранилище сеанса работает, а это означает, что если вам нужна эта функциональность, чтобы быть надежным, вы должны использовать серверную часть сеанса базы данных (или что-то вроде Redis).

Вы можететакже добавьте ForeignKey(Project, on_delete=SET_NULL) к модели профиля пользователя и используйте ее для сохранения текущего проекта.

...