Где вы храните переменные в jinja? - PullRequest
19 голосов
/ 12 января 2011

У меня есть пять страниц с одинаковым макетом и структурой, но с разными цветами, текстом и т. Д., Так что это идеальная среда для создания шаблонов. Я решил использовать Jinja2 и, вероятно, колбу. Я прочитал документацию и некоторые учебные пособия в Интернете, которые многое объясняют о том, что вы можете делать с шаблонами на странице, но не много о том, как отправлять переменные на страницу.

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

Ответы [ 2 ]

48 голосов
/ 12 января 2011

Вот основное использование:

Сначала создайте шаблон

>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')

Затем отрендерить его, передав переменные

>>> template.render(name='John Doe')
u'Hello John Doe!'

Обычно вы хотите загружать шаблоны из файлов вместо кода. Это более эффективно и оптимизировано и позволяет наследовать шаблоны:

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('yourapplication', 'templates'))

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

Затем вы можете загрузить шаблон:

template = env.get_template('mytemplate.html')
print template.render(the='variables', go='here')

При использовании Flask все настроено для вас, так что вы можете просто использовать функцию render_template Flask, и она уже будет искать подпапку templates вашего приложения:

from flask import render_template

@app.route('/hello/')
def hello(name=None):
    return render_template('hello.html', name=name)

Обратите внимание, что переменная шаблона (также известная как context ) передается в render_template

У Джинджи красивая хорошая документация . Пожалуйста, прочитайте это. Не стесняйтесь задавать дополнительные вопросы.

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

Редактировать: я гуглил интернет в поисках ответа и нашел несколько статей, которые могли бы помочь (уверен, они мне помогли)

http://dbanck.de/2009/01/13/using-jinja2-with-django/

http://www.hindsightlabs.com/blog/2010/03/15/jinja2-and-django-4ever/ (мертвый)

http://djangosnippets.org/snippets/1061/

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