你可以通过使用Django模板继承来实现。你会做一个“家庭”模板,并使用{% block content %}{% endblock %}
来定义博客文章的位置。在将显示博客文章(这是一个单独的HTML文件)的模板中,您将放置{%extends "home.html"%}
和相同的{% block content %}{% endblock %}
,并在{% block content %}{% endblock %}
之内放置博客文章的HTML代码。
当Django加载主页时,它会查看其他模板中名为“content”的块,并将加载其中的任何内容,在本例中为您的博客文章。
让我告诉你一个小例子:
home.html的
<title>Home</title>
<head>
<style type="text/css">
.content-wrapper{
text-decoration:none;
border: 1px none;
height: 50%;
left: 0%;
position: relative;
top: 8%;
width: 100%;
height: 100%;
z-index: 0;
}
</style>
</head>
<body>
<div class="content-wrapper">
{% block content %}{% endblock %}
</div>
</body>
和博客,posts.html
{%extends "home.html"%}
<head>PUT HERE ALL THE CSS STYLESHEETS YOU'LL BE USING AND PUT THEM ALSO IN HOME.HTML</head>
<body>
{%block content%}
HTML FOR YOUR BLOG POSTS
{%endblock%}
</body>
这种方式,你将不得不这样做独立的模板,但将做更少的代码。你必须将它们指向urls.py,因为它们的行为几乎与框架相似。
urls.py
urlpatterns = patterns('',
url(r'^blog-posts/','Mod031.views.blog-posts'),
url(r'^home/', 'Mod031.views.home', name='home'),
)
你都会有,也为了装载每个需要
def home (request):
return render_to_response('home.html', context_instance=RequestContext(request))
def blog-posts(request):
return render_to_response('blog-posts.html', context_instance=RequestContext(request))
如需进一步信息,请阅读文档模板:The Django template language
谢谢你非常想要一个彻底的答案!不知何故,我只是看不到整个画面,尽管现在看起来很清楚。我希望以另一种方式管理页面,而不是使用urls.py和views。py配置,例如,如果想创建一个网站,普通用户可以创建简单的网页,使用前面提到的博客帖子等功能,他们可以使用管理面板等。也许有人已经自己做了这样的插件。然而我现在对模板系统完全没问题,所以我明白了,谢谢! – Artsu 2012-08-02 17:40:57
哦,我很高兴能帮到你!我发表了答案后,我想了解更多。如果您打算将它们与链接相关联,则只需要为每个模板显示一个视图,就像在菜单中一样。当你从菜单中点击一个选项时,该选项将会有一个'a href',这将导致子模板在我之前提到的内容块中呈现。 – 2012-08-02 18:59:25