如何开始形成一个django网站以及django如何构建页面?

时间:2012-08-02 15:52:55

标签: django django-templates django-views

我为我的个人网站启动了一个django项目来学习django。到目前为止,我已经为我的开发环境设置了我需要的一切,并遵循this很棒的教程来创建一些基本的数据结构和模板。现在我想开始使用我之前制作的html布局并开始实现它的功能。但是我很难理解如何实现这一目标。

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

因此,例如,我希望有一个首页,我有一个“主题”(html-layout),也许还有最新的博客帖子。然后是另一个名为resources的页面,其中存在相同的“主题”和可下载内容列表。当然,布局中的某个位置可以在页面之间切换。

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

1 个答案:

答案 0 :(得分: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>

和blog-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