转自:http://haoluobo.com/trac/wiki/Django
Django
我和Django
我使用Python的很大一部分原因就是django。虽然在以前也用过python,不过始终没有什么特别的感觉。然后接触到了django。可以说django非常对我的胃口,特别是他的admin给人的感觉特别的棒。
django是个独断且固执的框架,框架里用的组件都是自己写的,而且往往会“知错不改”。所以用django就要试着thing in django,接受django所谓的设计哲学,如果接受不了那就换pylons或ROR什么的试试吧。
django并不完美,但这并不妨碍她成为一个优秀的web开发框架。
资源
使用django搭建的站点
django的开源项目
- pinax 这是我看到的最有价值的django开源项目。pinax可以看做是django的一个脚手架。她提供了快速开始一个新django项目的方法,同时对大量第三方app的使用方法进行了演示。django的app质量参差不齐,如果你想挑选app,那你可以看看pinax里都集成了哪些app。pinax里集成了的app通常都不至于太烂。此外pinax自身也带了一些有用的app,比如blog等。
如果你想以最快的速度了解pinax,可以去 http://cloud27.com/ 看看。这是一个用pinax搭建的SNS网站。 - Satchmo 网店系统。看她的介绍,似乎已经有不少人在用这东西了。
- LFS(Lightning Fast Shop) 网店系统,就Demo来看似乎是倾向于房屋交易平台。陆陆续续的也有部分商业网站开始使用该系统了, 比如这个。
- reviewboard 非常有前途的一个code review工具。最开始是 VMware在用,来后给开源了。
django相关资源
- twitter-bootstrap twitter开源的前端UI解决方案。对于缺少美工的开发者而言利用bootstrap可以很方便的作出还不错的界面。
- Fabric Fabric是一个Python库,可以通过SSH在多个host上批量执行任务。你可以编写任务脚本,然后通过Fabric在本地就可以使用SSH在大量远程服务器上自动运行。这些功能非常适合应用的自动化部署,或者执行系统管理任务。
- virtualenv 用于在一台机器上创建多个独立的python运行环境。使用virtualenv可以避免因在一台机器上部署多个应用时出现的python库版本冲突问题。
- Gunicorn Gunicorn 绿色独角兽'是一个Python WSGI UNIX的HTTP服务器。有着不错的性能,而且使用非常简单。instagram使了Gunicorn。
django的可重用APP
Django Packages 这个网站将可复用组件进行归类,并以表格的形式进行对比。如果你想找Django可重用APP,去这个网站是最方便的。我这里只对我认为最优秀的Django APP进行整理。
项目组织
django没有统一的项目组织规范,所以django项目的目录组织方式都各不相同。为解决该问题,也出现了一些相关项目。
CMS
- Django CMS Django CMS与其说是一个APP,倒不如说这是一个框架。Django CMS是目前开源Django CMS中功能最为完善的一个。Django CMS提供了插件接口,可以方便的以插件的方式进行扩展。此外,目前现成可用的插件也已经有一大堆了。
Forum
Django的论坛APP不少,但到就目前而言,还没有什么杀手级的APP。
- DjangoBB 功能比较完整。不过我认为搞的有些复杂了,易用性一般。如果你贪图它相对强大的功能,又不怕麻烦的话,可以试试。
- LBForum 我开发的论坛应用。优点是界面漂亮(提供了 FluxBB和 V2EX两种界面风格),部署简单,功能方面就不怎么强大了。如果你想要一个简单易用的Django论坛系统,推荐这个。
Blog
用Django写Blog数量众多(可能是数量最多的Django应用了),我虽然也写了一个,但我是不会去用这些Django博客。Blog很重要的一点是那些漂亮的模板。如果使用这些小众的东西,实在是难以找到让人满意的模板。
- zinnia 功能比较完善的一个Django博客,界面比较清爽。简单的看了一下她的代码,感觉写的很规范。比较看好这个博客系统。如果你想用django搭建自己的博客,推荐试试。
调试
数据库升级
在项目开发过程中表结构的变动总是难免,django目前还不支持表结构的自动更新,不过相关的第三方app倒不少。
- South South已经比较成熟了,就目前而言South是该类APP的不二选择。
注册、认证
权限认证
- django-guardian Django提供了精确到对象的权限控制API(比如那些人有权限编辑具体的某个文档),但Django并没有相关的实现。django-guardian给出了该API的实现,让你可以实现对具体对象的权限控制。
css/js静态资源压缩
Tagging
为站点增加Tag功能
Avatar(用户头像)
翻页
搜索
RESTful
消息队列(异步执行)
- django-celery web应用中难免会有些很费时的操作需要作成异步处理(比如在后台发送邮件,更新索引等),django-celery就是为解决该问题出现的。
其他