Вопрос по base, django, templates, project – Базовый шаблон проекта Django

38

Могу ли я создать базовый шаблон для своего проекта, из которого могут рисовать все приложения? Или мне нужно создать базовый шаблон для каждого приложения? И если бы я хотел, чтобы они были такими же, я быпросто скопировать их?

Ваш Ответ

4   ответа
6

Да, вы можете сделать это. Используяextends а такжеinclude теги шаблонов в ваших шаблонах Django.

Я начинаю изучать Джанго и недавно понял это. Мой код наGithub если вы хотите посмотреть, как я структурирую шаблоны Django для наследования отbase.html а потомinclude общие вещи, такие как navbar и header, footer и т.д.

6

В последнем ответе есть какая-то проблема, а вот правильная; у вас должен быть Base.html вот так:

{% load staticfiles %}




    My Project


{% block content %}{% endblock %}


а также для index.html

{% extend "appname/base.html" %}
{% block content %}
     test
{% endblock %}
Небольшая опечатка - должно быть {% extends "имя_приложения / base.html» %}, а не {% extension "имя_приложения / base.html» %} niceguydave
0

Да, вы можете создать базовый шаблон для вашего проекта, который будет расширяться другими приложениями. Проверьте @Kenny_Shen ответ о том, как.

Просто хотел добавить две заметки, если вы обеспокоены изоляцией приложения.

Если вы не хотите, чтобы ваше приложение полагалось наbase.html» Соглашение об именах, вы можете ввести фактическое имя с переменной, взгляните на:Как мне использовать Django 's шаблон расширяет переменную? для деталей,

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

61

Что вы можете. Быстрый пример base.html



    
        My Project
    

    
    {% block content %}{% endblock content %}
    

И скажем, у вас есть приложение под названием myapp со страницей view.html,

{% extends "base.html" %}

{% block content %}
    Content for My App
    <p>Stuff etc etc.</p>
{% endblock content %}

Потратьте некоторое время начитать документы для дополнительной информации

@jlh: у меня сработало, когда я поместил свои шаблоны в PROJECT_ROOT / имя-проекта / templates / base.html Andreas
@jih Ты можешь сказать Джанго заглянуть вPROJECT_ROOT/some_app/templates редактируяsettings.py файл - например:'DIRS': [os.path.join(BASE_DIR, "some_app", "templates")] alex
Важный момент, который многие пропускают, заключается в том, что{% extends xxx %} может принимать либо строковое литеральное имя файла (т.е. "base.html ")или же переменная, которая разрешается в имя файла. Мы используем это во время разработки и меняем ценность{% extends base_template %} на лету. Все первичные шаблоны (списки, детали, плоские файлы и т. Д.) Используют очень общую / семантическую разметку и все CSS / и т. Д. определяется в базовом файле для каждой темы. Например.themes/blue.html или же .themes/neon.html Peter Rowell
Это'мне не очень понятногде эти файлы должны идти. Я хочу, чтобы мой базовый шаблон находился внутри PROJECT_ROOT / templates / base.html, чтобы он был доступен для всех приложений. Но теперь, как я могу ссылаться на это, учитывая, чторасширить» оператор ищет шаблоны внутри PROJECT_ROOT / app-name / templates / ...? jlh

Похожие вопросы