实战Django:简易博客Part2

在Part1中,咱们完成了本项目的基本框架搭建,并完善了一下管理后台,如今咱们来看如何设计面向公共的页面部分。css

 

8.建立模板 html


首先,请在blog文件夹下创建templates文件夹,而后,在templates文件夹中创建一个叫bog的文件夹,在这个bog文件夹下新建一个archive.html文件,这个文件的路径应该是:数据库

bog/templates/bog/archive.html

把下面这些代码添加到archive.html中:django

bog/templates/bog/archive.html编程

{% for post in posts %}
<h2>` post`.`title `</h2>
<p>{{ post.timestamp|date:"Y-m-d" }}</p>
<p>` post`.`body `</p>
{% endfor %}

9.编写视图 浏览器


编辑bog/views.py 文件,添加下面的内容: 网络

bog/views.py框架

from django.template import loader, Context
from django.http import HttpResponse
from blog.models import BlogPost

def archive(request):
    posts = BlogPost.objects.all()
    t = loader.get_template("blog/archive.html")
    c = Context({ 'posts': posts })
    return HttpResponse(t.render(c))

咱们来简单分析一下这个视图,在第三行咱们从模型中导入了BlogPost对象,这样,咱们即可以在第五行,用BlogPost.objects.all() 来获取数据库中全部的文章内容。 ide

第6行:咱们只要告诉Django模板的名字,就能建立模板对象t,由于这个模板保存在应用的templates文件夹下,因此Django很轻松就能找到它。函数

第7行:Django渲染的数据是由一个字典类的对象context提供的,这里的context c只有一对键与值;

第8行:每一个Django视图函数都会返回一个HttpResponse的对象,咱们用render方法把字符串传递给HttpResponse,最终实如今用户的浏览器端看到整个页面。

 

10.建立Url模式


先在blog文件夹下建立一个叫url.py的文件,而后添加以下内容:

blog/urls.py

from django.conf.urls import patterns, url
from blog import views 

urlpatterns = patterns('',
    url(r'^$', views.archive),
)

咱们还须要修改项目的urls.py,编辑blogproject/urls.py 文件,让它变成下面这样:

blogproject/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^blog/', include('blog.urls', namespace="blog")),
    url(r'^admin/', include(admin.site.urls)),
)

上面这个操做作完后,咱们打开浏览器,在地址栏中输入:

能够看到咱们的博客页面:

5

11.扩展模板


看上去很简陋是否是?要知道,咱们的文章只是介绍编程这一块的内容,美术设计这种事,仍是留给专业的的人员来干吧。他们能够对现有的模板进行各类美化,最终变成你们喜闻乐见的样子。

讲到页面风格,咱们引伸出一个话题,若是咱们的网站上有好多种页面,好比博客、相册、“关于咱们”等等,并且咱们但愿这些页面都使用统一的风格。最笨的办法是复制粘帖,作出三个差很少的模板。但在Django中,正确的作法是,建立一个基础模板,而后在这之上扩展出其它特定的模板来。

在bog/templates/blog文件夹下新建一个base.html文件,而后加入下列内容:

bog/templates/blog/base.html:

<html>
<style type="text/css">
body { color: #000; background: #fff; padding: 0 5em; margin: 0; font-family:Microsoft Yahei;  }
h1 { color: #fff; padding: 2em 1em; background: #1162A0 }
h2 { color: #1162A0; border-top: 1px dotted #fff; margin: 1em 20 }
p { margin: 1em 20 }
</style>
<body>
<h1>实战Django</h1>
{% block content %}
{% endblock %}
</body>
</html>

注意把这个文件储存为UTF-8编码。

注意{% block content %} 和{% endblock %} ,这是给要扩展的模板预留的接口。

修改archive.html模板,让它引用这个base.html模板

bog/templates/bog/archive.html

{% extends "blog/base.html" %}
{% block content %}
{% for post in posts %}
<h2>` post`.`title `</h2>
<p>{{ post.timestamp|date:"Y-m-d" }}</p>
<p>` post`.`body `</p>
{% endfor %}    
{% endblock %}

最后,刷新一下浏览器,你能够看到以下的页面:

6

结合前面讲过的官方实例,你能够给这个简易博客应用增长更多的内容,好比,加入一个显示文章内容的页面,增长一个“关于”咱们的页面,等等。技能只有在不断的练习中才能进步,不要仅仅知足于“把这些内容看懂”。

下一次,舍得要给你们介绍一个比较有趣的实例,叫网络相册,在那里,你能够看到更多有用的技巧。

附上本实例的源代码下载地址:舍得学苑下载中心


【The End】


本文版权归舍得学苑全部,欢迎转载,转载请注明做者和出处。谢谢!
做者:舍得
首发:舍得学苑@博客园

相关文章
相关标签/搜索