打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(转)Python 网站开发(三)Django 模板的使用-东奎博客

Python 网站开发(三)Django 模板的使用

分类:Python, Django
0

上一篇文章中,我们创建了 blog 应用,并成功将 models.py 模块中的类导入到了 Sql Server 数据库,今天就让我们看看自动 admin 应用和模板的简单使用。

首先,需要指定一个 URL 来访问 admin ,只需将 urls.py 中自动生成的 (r'^admin/', include(admin.site.urls)), 前的 "#" 号(注释)去掉即可。这样 urls.py 中的 urlpatterns 如下:

urlpatterns = patterns('',    (r'^admin/', include(admin.site.urls)),)

打开 admin 应用,出现下边的错误:

原因是 admin 应用不是 Django 中必要的组件,同配置 blog 应用一样,我们只需将 settings.py 模块 INSTALLED_APPS 中 'django.contrib.admin', 前的 "#" 号去掉即可。刷新下页面,结果如下:

发现没有出现编辑文章项,这是因为我们没有告诉 Django 要在 admin 窗口中显示哪个 model,打开 blog/models.py 文件,导入 admin 应用并注册 article ,这样 models.py 文件为:

from django.db import models from django.contrib import adminclass article(models.Model):    title=models.CharField(max_length=50)    content=models.CharField(max_length=4000)    addtime=models.DateTimeField() admin.site.register(article)

这样,刷新我们的页面,结果如下:

点击 "Add" 即可发布文章,如下:

右下角有三个按钮,分别为“保存并发另一篇”、“保存并继续编辑本篇文章”和“保存”,我在这里发了三篇文章做测试。文章管理列表如下:

看起来确实不友好,不知道 Django 为什么默认会这样显示,现在就让我们改变显示方式。我们在 models.py 中添加一个 article_admin 类,并把它添加到注册代码中,如下:

class article_admin(admin.ModelAdmin):    list_display=('title','addtime')admin.site.register(article,article_admin)

可见,我们显示了文章的标题和发布时间,这样方便对文章的管理,我们可以进行排序等操作。到这里,我们简单了解了 admin 应用,可见对 blog 的管理还是很方便的。

接下来让我们看看 Django 中的模板,使用模板将要呈现的数据和 HTML 代码分离出来。在 "blog" 文件夹下新建 "templates" 文件夹,并在其中新建 "archive.html" 文件,这是我们的“文章归档”模板。需要注意的是 "templates" 文件夹的名字只能是这样,而模板的名字我们可以任意命名。往 blog/templates/archive.html 文件中添加如下代码:

{% for m in model %}    <article>        <h2>{{ m.title }}</h2>        <p>{{ m.addtime }}</p>        <p>{{ m.content }}</p>    </article>{% endfor %}

接下来在 views.py 中添加读取文章的代码,并使用模板将文章显示出来,如下:

from django.template import loader,Contextfrom django.http import HttpResponsefrom PythonProject.blog.models import articledef archive(request):    articles=article.objects.all()    t=loader.get_template("archive.html")    c=Context({'model':articles})    return HttpResponse(t.render(c))

写法是很固定的,相信大家能够理解。最后在 urls.py 文件添加 archive,如下:

from django.conf.urls.defaults import *from PythonProject.blog.views import archivefrom django.contrib import adminadmin.autodiscover() urlpatterns = patterns('',    url(r'^admin/', include(admin.site.urls)),    url(r'^archive/',archive),)

到这里,我们所做的工作显示如下:

结果是有了,但离我们一个像样的 blog 还很远。鉴于很多页面有相同的共用部分,我们创建一个基础模板。在这里为节省时间,我直接将东奎博客中的公用部分拿过来了,在 templates 文件夹下新建 "base.html" 公用模板,内容如下:

<!DOCTYPE html><html><head>    <link rel="stylesheet" type="text/css" href="/static/admin/css/Site.css" />     <!--[if lt IE 9]>        <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>    <![endif]--></head><body id="archive">    <div id="wrapper">        <header>            <a id="logo" href="/">Python001</a>        </header>        <nav>            <ul>                <li><a class="home" href="/">Home</a></li>                <li><a class="archive" href="/archive/">Archive</a></li>            </ul>        </nav>        <section id="container" class="group">            <section id="left">                {% block content %}                {% endblock %}            </section>            <aside id="right">            </aside>        </section>        <footer>        </footer>    </div></body></html>

接下来,我们修改 "archive.html" 模板为:

{% extends "base.html" %}{% block content %}{% for m in model %}    <article>        <h2>{{ m.title }}</h2>        <p>{{ m.addtime }}</p>        <p>{{ m.content }}</p>    </article>{% endfor %}{% endblock %}

刷新我们的页面,可以看到现在的效果好多了,如下:

限于篇幅,对 Django 中的模板使用我们会再花一篇的内容来做个介绍,如在图中时间格式的转换、文章排序等一些技巧。同时需要说明的是,文中没有过多的进行细节的解释,可能需要读者对 Python 语言有一定的了解,如元组、引入模块等等概念。

7

作者:东奎 发布时间:2011年07月20日
原文:Python 网站开发(三)Django 模板的使用
版权所有,转载时必须以链接形式注明作者和原出处并保留本声明。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用Python Django搭建个人博客系统(完整过程)!
Python做一个属于自己的web网站「下」
Django:快速搭建简单的Blog
Django搭建简易博客教程(三)
为你的Django视图使用装饰器 |只允许创建模型的用户删除它
Django 十分钟做出一个blog
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服