在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)), )
上面这个操做作完后,咱们打开浏览器,在地址栏中输入:
能够看到咱们的博客页面:
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 %}
最后,刷新一下浏览器,你能够看到以下的页面:
结合前面讲过的官方实例,你能够给这个简易博客应用增长更多的内容,好比,加入一个显示文章内容的页面,增长一个“关于”咱们的页面,等等。技能只有在不断的练习中才能进步,不要仅仅知足于“把这些内容看懂”。
下一次,舍得要给你们介绍一个比较有趣的实例,叫网络相册,在那里,你能够看到更多有用的技巧。
附上本实例的源代码下载地址:舍得学苑下载中心
【The End】