我想用这个主题替换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.
我不明白他们的意思。我在文件settings.py中看到STATICFILES_DIRS和TEMPLATE_LOADERS,它们意味着我必须将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).
所以我必须将“theme_base.html”扩展到“site_base.html”中。并且如果之前没有“site_base.html”,应该包括“页脚”和“导航”块吗?
Your pages should have blocks "head_title" and "body" and should extend "site_base.html".
所以在我想要使用这个主题的任何页面中,我必须有块“head_title”和“body”,并且应该扩展“site_base.html”。如果我有一个已经扩展“site_base.html”的“base.html”,我是否还需要再延长一次?
The url name "home" should be defined as the homepage.
不确定。
请给我一些建议,谢谢!
答案 0 :(得分:2)
我知道。 Pinax的文档可以让一个人疯狂......我想,无论如何,让我们感激不尽。
首先,创建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 %}
则...
网址名称&#34; home&#34;应该被定义为主页。
这只是意味着在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"
,您认为如何解决home
?
这也回答了有关网站名称的问题。您必须安装Django站点,然后才会定义SITE_NAME
。
答案 1 :(得分:0)
这里的要求文件是什么?
这是一个可选的最佳做法。如果你想了解更多,这是我前一段时间写的一篇文章:http://dev.chocolatpistache.com/blog/2009/11/04/pinax-virtualenv-setuptools-pip-easy_install-and-requirementstxt/
确保模板加载器和静态文件查找器都包含应用程序目录。我不明白他们的意思。我在文件settings.py
中看到了STATICFILES_DIRS和TEMPLATE_LOADERS
您的TEMPLATE_LOADERS有“django.template.loaders.app_directories.load_template_source”。这是“模板的app loader”。你需要检查STATICFILES_FINDERS。默认情况下,这些设置应该打开。
将“apps.pinax-theme-bootstrap”添加到TEMPLATE_LOADERS是完全错误的。它应该在某个时候打破你的网站。
所以我必须将“theme_base.html”扩展到“site_base.html”中。并且如果之前没有“site_base.html”,应该包括“页脚”和“导航”块吗?
只需在yourproject / templates / site_base.html中复制theme_base.html即可让您更轻松。
关于模板继承的链接:
https://docs.djangoproject.com/en/dev/topics/templates/#tags(关于“阻止和扩展”的部分 http://dev.chocolatpistache.com/blog/2009/07/15/template-inheritance-explained/
所以在我想要使用这个主题的任何页面中,我必须有块“head_title”和“body”,并且应该扩展“site_base.html”。如果我有一个已经扩展“site_base.html”的“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(默认情况下大多数项目都需要它)。
我的朋友耐心和坚持不懈,如果你想摇滚乐,这是一个很长的路要走。)