Отображение общей информации о сеансе в каждом представлении - PullRequest
0 голосов
/ 19 июля 2009

Я хотел бы вывести некоторую информацию, которая зависит от данных сеанса в Django. Давайте возьмем, к примеру, фрагмент «Логин» / «Вход в систему как | Выход из системы». Это зависит от моего request.session['user'].

Конечно, я могу помещать пользовательский объект в контекст каждый раз, когда я визуализирую страницу, а затем включаю {% if user %}, но, похоже, это нарушает идею СУХОЙ - мне нужно было бы добавлять пользователя в каждый контекст в каждом представлении. 1005 *

Как мне извлечь такой фрагмент и сделать его более распространенным?

Ответы [ 3 ]

5 голосов
/ 19 июля 2009

Используйте наследование шаблонов , чтобы извлечь все ваши шаблоны из общей базы, которая соответствующим образом использует общие части контекста, и создать все ваши контексты с помощью заводской функции, которая обеспечивает вставку в них этих общих частей.

0 голосов
/ 27 сентября 2011

Возможно, вы захотите использовать контекстный процессор, который включает логику, и поместить его в переменную, которую вы можете использовать на любой из ваших страниц, не добавляя его в каждый вызов.

См. Дополнительную информацию на Как передавать данные общего словаря на каждую страницу в django

0 голосов
/ 19 июля 2009

Вы пытаетесь сделать определенные области своего сайта доступными только при входе в систему? Или определенные области конкретной страницы?

Если вы хотите заблокировать доступ ко всему URL, вы можете использовать декоратор @login_required в своих функциях, чтобы заблокировать определенный доступ. Кроме того, вы можете использовать include, чтобы сохранить общие части вашего сайта, требующие входа пользователя, в отдельном html, который включается, таким образом вы пишете свои операторы if один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...