half-life
@half-life

Jinja2 логика шаблонов?

Добрый день. Начал изучать шаблонизатор Jinja2. И у меня появились некоторые вопросы, а именно:
  1. Как правильно организовать логику взаимодействия между шаблонами
  2. Как передавать значение переменных из шаблона в шаблон

Есть три файла
  1. src/templates/base.html
  2. src/templates/index.html
  3. src/templates/layouts/header.html


src/templates/base.html

{% load staticfiles %}
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/reset.min.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/main.css' %}"/>
</head>
<body>
    {% block header %}{% endblock %}
    {% block nav %}{% endblock %}
    {% block content %}{% endblock %}
    {% block footer %}{% endblock %}
</body>
</html>



src/templates/index.html

{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block header %}
{% include "layouts/header.html" %}
{% endblock %}



src/templates/layouts/header.html

<header>
    <p>{{ text }}</p>
</header>


Вопрос правильно ли я делаю? Если нет, то подскажите как правильно.
И как в src/templates/index.html передать значение {{ text }} из src/templates/layouts/header.html
  • Вопрос задан
  • 1962 просмотра
Решения вопроса 1
half-life
@half-life Автор вопроса
Вот так получается передать значение переменной.

src/templates/base.html
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <link rel="stylesheet" href="{% static 'css/reset.min.css' %}"/>
    <link rel="stylesheet" href="{% static 'css/main.css' %}"/>
</head>
<body>
    {% block header %}{% endblock %}
<script src="{% static 'js/main.js' %}"></script>
</body>
</html>

src/templates/index.html
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block header %}
    {% with txt='1' %}
        {% include "layouts/header.html" %}
    {% endwith %}
{% endblock %}

src/templates/layouts/header.html
<header>
    <p>{{ txt }}</p>
</header>


Если переменных несколько

src/templates/index.html
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block header %}
    {% with txt='1' txt2='2' txt3='3' %}
        {% include "layouts/header.html" %}
    {% endwith %}
{% endblock %}

src/templates/layouts/header.html
<header>
    <p>{{ txt }}</p>
    <p>{{ txt2 }}</p>
    <p>{{ txt3 }}</p>
</header>

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы