Как быть более сухим во взглядах в Django? Мне нужно запросить и добавить в контекст при каждом просмотре главного меню? - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть представление, которое делает запрос, чтобы получить главное меню:

categories = Category.objects.all()

и это будет почти на всех страницах. Как мне сделать это более сухим?

Ответы [ 3 ]

2 голосов
/ 08 ноября 2011

это для использования в ваших шаблонах?если это так, вы можете взглянуть на контекстные процессоры

1 голос
/ 08 ноября 2011

Есть несколько вариантов.

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

Когда дело касается DRY:

  1. Выделенный блок в вашем базовом шаблоне {% block menu %}.Затем вы можете поместить HTML в отдельный суб-шаблон (расширить базовый шаблон)
  2. Тег шаблона, который создает ваше меню (например: http://djangosnippets.org/snippets/347/ ... хотя этоФрагмент довольно старый, но он должен дать вам идею )
  3. полноценного приложения (например: https://github.com/rossp/django-menu)
1 голос
/ 08 ноября 2011

Если вы хотите, чтобы что-то было на каждой странице, создайте процессор контекста .И подумай о кешировании.

...