用Django做Blog实在是太过简单,所以在网上可以轻易的找到大量用django实现的Blog,DPress就是其中一个。
本想用这个项目做Django最佳实践的教程,不过发现自己实在是不擅长这个。此外该项目花费的时间比预期的要多出不少,以至到后期挺没耐心,功能方面也因此大幅缩水。
目前DPress的基础功能已经完成,文档方面我会在晚些时候补上。
有兴趣的朋友可以将代码下回来看看。如果要使用Django自己服务器启动起来非常容易。
- 使用SVN把代码下回来 http://dpress.googlecode.com/svn/trunk/ 。
- 运行 \trunk\scripts\init.bat 完成一些必要的初始化(复制静态文件到相关目录)。
- 运行 \trunk\site\dpress\scripts\syncdb.bat 初始化数据库。
- 运行 \trunk\site\dpress\scripts\runserver.bat 启动服务。
- 访问 http://127.0.0.1:8000/admin/ 在管理后台添加日志。
DPress本着以最少的代价完成最多工作的原则,能不造轮子的地方就不造轮子。
- Blog的编辑功能完全交给admin处理。
- 使用filebrowser对admin扩展,实现对文件的管理。
- 使用django-tinymce,实现html的可视化编辑。
- 文章的Tag功能使用django-tagging实现。
- comments功能使用django.contrib.comments。
- Blog本身也大量“借鉴”了pinax的blog组件。
- Blog支持使用书写格式有Markdown、Textile、普通文本,html(支持可视化编辑)、reStructuredText(当然,你需要安装有相关的库)。
对Blog应用来说,一般都会有较高的个性化要求。换肤基本上成了必备功能。很遗憾,这方面是django的软肋。换肤需要创建新的模板,并需要修改配置文件,指定使用新模板。好的方面是,DPress的模板在我优化过后,还是比较简单,改起来还算方便的。
虽然在开始DPress之前就计划的很好,本以为很容易就可以搞定,但事与愿违开发过程中遇中还是遇到了一些麻烦。
Pinax中的Blog组件使用threadedcomments来增加评论支持。在评论内容填写不完整时,会转到它自定义的页面。我认为这是一个挺不友好的设置,尝试修正无果。切换到django.contrib.comments后问题则更糟,不但评论出错会跳到自定义页面,即使评论成功了不会转到评论页面,而是给出一个评论成功的提示。最后没办法,还是自己将添加评论的代码给写了一遍。
此外在模板方面也折腾掉了大量的时间。模板的本身也是程序中重要的一环,但不少的可重用app都没有带任何模板,而且也缺乏模板方面的范例。在我看来,这也是django的第三方app普遍不太好用的重要原因之一。
下面上张图吧,模板的样式,是偷的朋友BLOG的(他也是偷别人的)。