2016-02-17 4 views
0

У меня есть общие вещи во всех файлах Jinja. Я хочу переместить весь общий контент в один файл Jinja в Flask.Пропустить контекст для включения шаблона Jinja в шаблон Jinja

Мое приложение написано в Flask и я передаю контекст шаблона Джинджя как

def f1(name): render_template('j1.jinja', name=name)

def f2(name): render_template('j2.jinja', name=name)

def f3(name): render_template('j3.jinja', name=name)

Мой j1.jinja файл:

{%block content %} 
Name: {{ name }} 
Hello 
{% endblock %} 

Мой j2.jinja файл:

{%block content %} 
Name: {{ name }} 
Bye 
{% endblock %} 

Мой j3.jinja файл:

{%block content %} 
Name: {{ name }} 
Howdy 
{% endblock %} 

я переехал общее содержание в одном Джинджя файл common.jinja, который:

{% block content %} 
Name : {{name}} 
{% endblock %} 

Я включаю его в все файлы Jinja, такие как:

{% include 'common.jinja' with { "name": name } only %} 

который не работает. Я получаю исключение:

Exception Occured. Explanation: expected token 'end of statement block', got 'with' 

Как передать контекст в файл Jinja?

+2

Где вы видите синтаксис 'with ... only'? – davidism

ответ

1

Ваш код выглядит немного странно. Не существует отдельного оператора with, который указывает контекст, это with context, который часто используется с оператором import (см. Import context behaviour).

Чтобы передать любой контекст включенному шаблону, просто визуализируйте родительский шаблон с помощью контекстных переменных, например. в render_template():

render_template('j3.jinja', name=name) 
Смежные вопросы