django передает часто используемые словари в шаблоны, не передавая их явно в каждом представлении? - PullRequest
2 голосов
/ 27 февраля 2012

Когда вы делаете render_to_template, вы передаете словарь различных элементов, которые шаблон должен отображать. Некоторые из них обычно используются на всех страницах, например, приветствие пользователя или что-то подобное. Есть ли способ сделать жизнь немного проще, передавая подобные элементы словаря во все шаблоны без необходимости явно определять их в каждом представлении?

Ответы [ 2 ]

4 голосов
/ 27 февраля 2012

Это то, для чего нужны контекстные процессоры - вы можете определить словарь, который будет добавляться в контекст каждого ответа.

Их очень просто написать, и вам просто нужно добавить их в свойнастройки.Просто не забудьте убедиться, что вы используете RequestContext, а не простой контекст для своих шаблонов, и они будут запускаться автоматически каждый раз.

Документы здесь: https://docs.djangoproject.com/en/1.3/ref/templates/api/#writing-your-own-context-processors

1 голос
/ 27 февраля 2012

Вы можете использовать контекстный процессор, как показано в в этом примере . Каждый render_to_response будет выглядеть как:

return render_to_response("my_app/my_template.html", {'some_var': 'foo'},
                       context_instance=RequestContext(request))
...