Django博客系统开发小结

723次阅读  |  发布于5年以前

从最开始的ROR,到后来的CI、CakePHP、ThinkPHP等各式各样的MVC框架用了不少,还是觉得用来开发QuQuBlog的Django框架最吸引人, 玩着玩着就上瘾了。

记录下开发过程中的一些点滴:

Python是之前装的2.6.5,Django用SVN里的1.3RC,IDE用eclipse+Pydev,数据库一开始用sqlite,后来改用到mysql。

开发过程中用Django自带的runserver来启动web服务,用django-debug- toolbar来分析和优化SQL查询语句。服务器上跑的是Apache2+mod_wsgi,之后可能会换成lighttpd+fastcgi。

博客用户系统用的框架自带的django.contrib.auth,Tag系统用的django- tagging,评论系统用的自带的django.contrib.comments。

后台发布博客用的TinyMCE这个优秀的web编辑器,参考了这篇文章给编辑器加上了插入

代码标签功能,前台用SyntaxHighlighter在浏览
器端高亮代码,使用AutoLoader动态引入代码高亮文件。

另外还使用django.core.paginator,结合django模板的自定义标签扩展了一个通用的分页组件。

通过django.contrib.syndication.views和django.utils.feedgenerator对博客输出rss和atom订阅,下 面是全部代码:


# -*- coding:utf8 -*-

    '''
    Created on 2011-3-8

    @author: Jerry
    '''
    from django.contrib.syndication.views import Feed
    from django.utils.feedgenerator import Atom1Feed
    from django.contrib.sites.models import get_current_site

    from blogs.models import Post

    class PostRssFeed(Feed):
        title = u'Jerry Qu \'s 小站'
        link = 'http://' + get_current_site(None).domain
        description = u'Welcome to Jerry Qu \'s 小站'
        author = 'Jerry Qu'

        def items(self):
            return Post.objects.get_post().order_by('-pub_date')[:10]

        def item_title(self, item):
            return item.title

        def item_pubdate(self, item):
            return item.pub_date

        def item_description(self, item):
            return item.content

    class PostAtomFeed(PostRssFeed):
        feed_type = Atom1Feed
        subtitle = PostRssFeed.description

展示评论时,参考了Gravatar官方文档获取用户头像,跟之前用的wordpress展示上是一样的。

从上面可以看出Django的开发效率是有多么高,基本你能想到的功能都能找到完整的解决方案。但只是使用现成库不见得是一件好事,好在python大部分库都是有源 码的,可以通过阅读源码来了解别人的思路,学习别人代码上的优点。

接下来,我还会继续开发这个博客系统,Django和Python好玩的东西还有好多,近期会自己实现以下功能:

  • 媒体中心,主要是图片上传和管理功能;
  • 新的评论系统,使用Akismet Api过滤垃圾评论;以及邮件通知新评论机制;
  • MetaWeblog Api,可以通过Windows Live Writer客户端发表博客。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8