Установить тему для пинакса

Я хочу заменить тему 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>&copy; 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 (а также многие вещи, которые нужны большинству проектов по умолчанию).

Терпение и настойчивость, мой друг, это долгий путь к вершине, если ты хочешь рок-н-ролл:)

Другие вопросы по тегам