2012-08-02 55 views
2

我开始了我的个人网站的django项目来学习django。到目前为止,我已经为我的开发环境设置了我需要的所有内容,并遵循this伟大的教程来创建一些基本的数据结构和模板。现在我想开始使用我之前制作的html布局,并开始实现它的功能。然而,我很难理解如何完成这一点。如何开始形成一个Django网站,以及如何Django结构页面?

我之前主要完成了java门户解决方案,在此之前我可以启动服务器,创建一些页面,设置我的主题,然后添加自定义portlet(功能/代码),无论我想要什么。在Django中,我用我的html布局创建了一个视图,并且工作正常。然而,我不明白我应该如何处理页面。是否需要为url中的每个视图创建单独的视图并查看配置,然后对每个页面使用相同的html布局,并且只在需要时设置不同的功能?似乎不像django的方式,因为少了更多。我想我可以像Portlet一样使用视图,使它们成为某个页面的一部分(这是一个视图本身?)对不对?就像在页面的某个部分进行投票一样。怎么样?

因此,例如我想有一个首页,我有一个特定的“主题”(html布局),也许有最新的博客帖子。然后另一个页面命名资源,其中有相同的“主题”和可下载内容的列表。自然地,布局中的某处导航页面之间进行切换。

如果有人能指引我走向正确的方向,我会非常感激!

回答

4

你可以通过使用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

+0

谢谢你非常想要一个彻底的答案!不知何故,我只是看不到整个画面,尽管现在看起来很清楚。我希望以另一种方式管理页面,而不是使用urls.py和views。py配置,例如,如果想创建一个网站,普通用户可以创建简单的网页,使用前面提到的博客帖子等功能,他们可以使用管理面板等。也许有人已经自己做了这样的插件。然而我现在对模板系统完全没问题,所以我明白了,谢谢! – Artsu 2012-08-02 17:40:57

+0

哦,我很高兴能帮到你!我发表了答案后,我想了解更多。如果您打算将它们与链接相关联,则只需要为每个模板显示一个视图,就像在菜单中一样。当你从菜单中点击一个选项时,该选项将会有一个'a href',这将导致子模板在我之前提到的内容块中呈现。 – 2012-08-02 18:59:25

相关问题