Flask - начальная загрузка в base.html - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу добавить Bootstrap на мой сайт. У меня есть base.html и другие файлы, которые наследуются от base.html, но в моем base.html я хочу иметь панель навигации, которая будет отображаться на каждом сайте. К сожалению, после добавления кода начальной загрузки он не отображается, но если я добавлю этот код в index.html, он будет отображен.

Мой base.html:

{% extends "bootstrap/base.html" %}
{% block head %}
    {{ super() }}
    {% if title %}
    <title> {{ title }} - Book Blog</title>
    {% else %}
    <title> Welcome to Book Blog!</title>
    {% endif %}
{% endblock %}

{% block navbar %}
Microblog: 
    <ul class="nav nav-pills">
    <li class="nav-item">
        <a class="nav-link active" href="{{ url_for('index') }}">Home</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('show_books') }}">Books</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('login') }}">Login</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('logout') }}">Logout</a>
    </li>
</ul>
{% endblock %}

<body>

<hr>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
    {% for message in messages %}
    <li>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
</body>

Таким образом, в этом случае навигационная панель не отображается. И, как я писал выше, если я добавлю классы nav в index.html, navbar отобразится только на этом сайте. Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Возможно, проблема связана с вашей страницей index.html . В принципе, ваша индексная страница должна наследоваться от шаблона base.html . Что должно дать это:

{% extends "base.html" %}
{% block title %}Welcome to Book Blog!{% endblock %}

{% block content %}
    <div>
        <h1>Your content</h1>
    </div>
{% endblock %}

Ваш шаблон base.html тоже может немного измениться:

{% extends "bootstrap/base.html" %}
{% block head %}
    {{ super() }}
    {% if title %}
        <title> {{ title }} - Book Blog</title>
    {% else %}
        <title> Welcome to Book Blog!</title>
    {% endif %}
{% endblock %}

{% block body %}
<body>

{% block navbar %}
Microblog: 
<ul class="nav nav-pills">
    <li class="nav-item">
        <a class="nav-link active" href="{{ url_for('index') }}">Home</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('show_books') }}">Books</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('login') }}">Login</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="{{ url_for('logout') }}">Logout</a>
    </li>
</ul>
{% endblock %}

    <hr>
    {% with messages = get_flashed_messages() %}
        {% if messages %}
            <ul>
                {% for message in messages %}
                    <li>{{ message }}</li>
                {% endfor %}
           </ul>
       {% endif %}
    {% endwith %}
    {% block content %}{% endblock %}
</body>
{% endblock %}

Я добавил тег блока в тег body вашего шаблона. Теперь вы должны наследовать этот шаблон на всех страницах, где вы хотите иметь одинаковую структуру (навигационная панель и т. Д.)

0 голосов
/ 13 ноября 2018

Возможно, вам необходимо импортировать загрузочные библиотеки Libs (Js, Css) на каждую страницу.Я бы порекомендовал написать файл <title></title>, который можно импортировать на каждую страницу.То же самое относится и к атрибуту: напишите файл для панели навигации и импортируйте его в «Базовый HTML» всякий раз, когда вам нужна панель навигации.Надеюсь, я смогу помочь

...