Установить тему для пинакса
Я хочу заменить тему Pinax по умолчанию на эту тему: https://github.com/pinax/pinax-theme-bootstrap Но я не уверен, что понимаю инструкцию по быстрому запуску. Не могли бы вы дать мне подсказку?
Include "pinax-theme-bootstrap" in your requirements file and "pinax_theme_bootstrap" in your INSTALLED APPS.
Что такое файл требований здесь?
Make sure both template loaders and staticfiles finders includes app directories.
Я не понимаю, что они имеют в виду. Я вижу STATICFILES_DIRS и TEMPLATE_LOADERS в файле settings.py, они означают, что я должен поместить каталог pinax_theme_bootstrap в папку apps и включить ссылки на этот каталог. Как это:
STATICFILES_DIRS = [
os.path.join(PROJECT_ROOT, "media"),
os.path.join(PINAX_ROOT, "media", PINAX_THEME),
os.path.join(PINAX_ROOT, "apps", pinax-theme-bootstrap),
]
TEMPLATE_LOADERS = [
"django.template.loaders.filesystem.load_template_source",
"django.template.loaders.app_directories.load_template_source",
"apps.pinax-theme-bootstrap",
]
Site name comes from Sites fixture.
Я совершенно не понимаю, что они имеют в виду.
Your "site_base.html" should extend "theme_base.html" and should provide "footer" and "nav" blocks (the latter should just be a ul of li of a links).
Поэтому я должен поместить extends "theme_base.html" в "site_base.html". И следует ли включать блоки "footer" и "nav" внутри site_base.html, если раньше этого не было?
Your pages should have blocks "head_title" and "body" and should extend "site_base.html".
Поэтому на любых страницах, где я хочу использовать эту тему, я должен иметь блоки "head_title" и "body" и должен расширять "site_base.html". Если у меня есть "base.html", который уже расширяет "site_base.html", должен ли я расширяться еще раз?
The url name "home" should be defined as the homepage.
Точно сказать не могу.
Пожалуйста, дайте мне несколько предложений, спасибо!
2 ответа
Я знаю. Документация Пинакса может свести с ума... Думаю, все равно будем благодарны.
Прежде всего, создать templates/site_base.html
, Пример:
{% extends "theme_bootstrap/base.html" %}
{% block nav %}
<ul class="nav navbar-nav navbar-left">
<li><a href="#">Link 1</a>
<li><a href="#">Link 2</a>
</ul>
{% endblock %}
{% block footer %}
<div class="container">
<hr>
<footer>
<p>© Myself, 2014</p>
</footer>
</div>
{% endblock %}
Затем...
URL-адрес "home" должен быть определен как домашняя страница.
Это просто означает, что в urls.py
Ваша домашняя страница должна быть помечена name='home'
, Например,
url(r'^$', 'app.views.index', name='home'),
В противном случае вы получите такие ошибки, как
NoReverseMatch at /account/signup/
Reverse for 'home' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
По факту, base.html
имеет следующую строку:
{% block site_brand %}<a class="navbar-brand" href="{% url "home" %}">{{ SITE_NAME }}</a>{% endblock %}
Как вы думаете, это собирается решить url "home"
если вы не пометили свои URL как home
?
Это также отвечает на вопрос о названии сайта. Вы должны установить сайты Django, затем SITE_NAME
будет определено.
Что такое файл требований здесь?
Это необязательная лучшая практика. Если вы хотите узнать больше, вот статья, которую я написал некоторое время назад: http://dev.chocolatpistache.com/blog/2009/11/04/pinax-virtualenv-setuptools-pip-easy_install-and-requirementstxt/
Убедитесь, что загрузчики шаблонов и средства поиска статических файлов содержат каталоги приложений. Я не понимаю, что они имеют в виду. Я вижу STATICFILES_DIRS и TEMPLATE_LOADERS в файле settings.py
Ваш TEMPLATE_LOADERS имеет "django.template.loaders.app_directories.load_template_source". Это "загрузчик приложений для шаблонов". Вам нужно проверить STATICFILES_FINDERS. Эти настройки должны быть включены по умолчанию в любом случае.
Добавить apps.pinax-theme-bootstrap к TEMPLATE_LOADERS просто неправильно. Это должно сломать ваш сайт в какой-то момент.
Поэтому я должен поместить extends "theme_base.html" в "site_base.html". И следует ли включать блоки "footer" и "nav" внутри site_base.html, если раньше этого не было?
Просто скопируйте theme_base.html в yourproject/templates/site_base.html Это облегчит вам задачу.
Ссылки о наследовании шаблонов:
https://docs.djangoproject.com/en/dev/topics/templates/ (раздел о "блокировании и расширении" http://dev.chocolatpistache.com/blog/2009/07/15/template-inheritance-explained/
Поэтому на любых страницах, где я хочу использовать эту тему, я должен иметь блоки "head_title" и "body" и должен расширять "site_base.html". Если у меня есть "base.html", который уже расширяет "site_base.html", должен ли я расширяться еще раз?
Ваш шаблон "article_detail.html" будет выглядеть так:
{% extends 'site_base.html' %}{# this is your copy of theme_base.html #}
{% block head_title %}{{ article.title }}{% endblock %}
{% block body %}
<h1>{{ article.title }}</h1>
<p>{{ article.body }}</p>
{% endblock %}
Моя рекомендация: установить Pinax и использовать его стартовый проект, который по умолчанию имеет pinax-theme-bootstrap (а также многие вещи, которые нужны большинству проектов по умолчанию).
Терпение и настойчивость, мой друг, это долгий путь к вершине, если ты хочешь рок-н-ролл:)