2

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

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

因此,例如,我希望有一个首页,其中有一个特定的“主题”(html-layout),也许还有最新的博客文章。然后是另一个名为资源的页面,其中有相同的“主题”和可下载内容的列表。自然是在布局中的某处导航以在页面之间切换。

如果有人能指出我正确的方向,我将不胜感激!

4

1 回答 1

4

您可以通过使用 Django 模板继承来做到这一点。您将创建一个“主页”模板,并使用它{% block content %}{% endblock %}来定义博客文章的位置。在您将显示博客文章的模板(这是一个单独的 HTML 文件)中,您将放置{%extends "home.html"%}和 相同的{% block content %}{% endblock %},在 内部{% block content %}{% endblock %},您将放置博客文章的 HTML 代码。

当 Django 加载主页时,它会查看您在其他模板中还有哪些名为“content”的块,并将加载其中的任何内容,在这种情况下,就是您的博客文章。

让我给你看一个小例子:

主页.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,因为它们的行为几乎就像框架一样。

网址.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))

有关更多信息,请阅读文档:Django 模板语言

于 2012-08-02T16:16:23.193 回答