Наследование шаблонов в Django - PullRequest
0 голосов
/ 22 сентября 2011

Ладно, это полностью ошеломляет меня.

У меня есть очень простой _base.html, код которого выглядит следующим образом:

<!DOCTYPE html />
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
    {% load static %}

    <title>Welcome!</title>

    <!-- Includes jQuery UI -->
    <script type='application/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'></script>
    <script type='application/javascript' src='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js'></script>
    <link rel='stylesheet' href='https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/themes/cupertino/jquery-ui.css' type='text/css' media='screen' />

    <!-- Includes Columnal -->
    <link rel='stylesheet' href='{% get_static_prefix %}Columnal/columnal.css' type='text/css' media='screen' />

    <!-- Custom CSS -->
    <link rel='stylesheet' type='text/css' href='{% get_static_prefix %}Style.css' />

    {% block head %}
    {% endblock %}
</head>

<body>
    <header>
        <table width='100%'>
            <tr>
                {% if user.is_authenticated %}
                    <td>Welcome, {{user.username}}!</td>
                    <td align='right'><a href='logout/'>Logout</a></td>
                {% else %}
                    <td><a href='login/'>Login / Register</a></td>
                {% endif %}
            </tr>
        </table>
    </header>

{% block content %}
{% endblock %}

</body>
</html>

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

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

{% extends '_base.html' %}

Всего одна строка кода.Можно было бы подумать, что, если я отобразлю этот файл, я получу тот же результат, что и при отображении самого _base.html.Тем не менее, это не тот случай.По какой-то причине, когда я использую этот простой дочерний шаблон, над заголовком появляется лишняя белая линия небытия.Что еще более странно, что если я выбираю источник просмотра для обеих страниц (то есть страницы, которую я получаю непосредственно из _base.html и страницы, которую я получаю из дочернего шаблона), он говорит, что код источника точно такой же (яиспользуя Chrome).Как получается, что два файла, которые должны отображать одну и ту же страницу, дают один и тот же точный исходный код (в соответствии с браузером), но отображают по-разному.

Это полностью поражает меня, и я понятия не имею, что может бытьвызывая это.Насколько я понимаю, Django делает это за кулисами и передает браузеру необработанный HTML-файл, так что браузер не должен заботиться о том, как я генерировал HTML, если он одинаковый.Как тогда эти два метода могли дать разные результаты?Любая помощь будет очень признательна, так как я застрял на этом в течение последних двух дней.

PS: Я сожалею, что код для _base.html немного длинен для сообщения на форуме.Я, вероятно, мог бы немного отрубиться, но, поскольку я понятия не имею, что здесь происходит, у меня нет понятия о том, что имеет значение, а что нет, поэтому я не хотел рисковать.

РЕДАКТИРОВАТЬ: Как я упоминал ранее, (в Chrome), если я щелкну правой кнопкой мыши и выберу «Просмотр исходного кода страницы» для обеих страниц, я получу точно такой же исходный код.Однако, если вместо этого я выберу «Проверить элемент», исходный код не будет таким же.По какой-то причине при просмотре исходного кода с помощью 'Inspect element' с использованием дочерней версии шаблона я нахожу все содержимое в теге <head> _base.html, расположенном в теге <body> исходного кода, который я вижу.Есть идеи, почему это произойдет?

1 Ответ

0 голосов
/ 22 сентября 2011

Вы указали правильный путь к каталогу шаблонов в TEMPLATE_DIRS файла settings.py.

Также вы пытались просмотреть страницу, очищая все данные о просмотре (куки, кеш и т. Д.)?

Возможно, браузер кеширует данные за кулисами.

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