2011-01-12 4 views
19

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

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

Настой является хорошим выбором. И его учебник более или менее отвечает на ваши вопросы: http://flask.pocoo.org/docs/quickstart/#rendering-templates. Также обратите внимание на то, как '@ app.route' определяет URL-адрес. – 9000

+0

Спасибо, поэтому у меня будет скрипт python для каждой страницы, объявить переменные в каждом скрипте python, а затем передать их в template.render? –

ответ

48

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

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

>>> 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') 

При использовании Настоя это все настроено для вас, так что вы можете просто использовать render_template функции КОЛБЫ и она будет уже искать templates подпапки приложения:

from flask import render_template 

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

Примечания переменной шаблона (также известная как контекста) передаются в render_template

Jinja имеет довольно good documentation. Пожалуйста, прочитайте его. Не стесняйтесь задавать дополнительные вопросы.

1

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

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/

+0

Выбор ссылок без какого-либо объяснения не помогает, -1 из меня. – jwbensley

+0

@jwbensley Awww, не полезно, потому что вставка копирования отключена? Вот объяснение: читайте ...Но и ваше голосующее голосование законно, потому что я был ленив или спешил (не могу вспомнить, какой) – StefanNch

+0

Просто вставляя нагрузку ссылок, вы можете связать гниль, что очевидно, поскольку вы теперь отметили одну из этих ссылок мертвой. – jwbensley

Смежные вопросы