wiki:Django

Django

我和Django

我使用python的很大一部分原因就是django。虽然在以前也用过python,不过始终没有什么特别的感觉。然后接触到了django。可以说django非常对我的胃口,特别是他的admin给人的感觉特别的棒。
django是个独断且固执的框架,框架里用的组件都是自己写的,而且往往会“知错不改”。所以用django就要试着thing in django,接受django所谓的设计哲学,如果接受不了那就换pylons或ROR什么的试试吧。
django并不完美,但这并不妨碍她成为一个优秀的web开发框架。

资源

使用django搭建的站点

  • addons.mozilla.org FireFox的插件下载网站,从google的统计数据上看PV大概在douban一半的样子。技术细节方面可以看他们的幻灯片。该网站完全开源,代码可以在这里找到。
  • disqus 这个网站在国内见得不多,可能很多人对它不太清楚。这个网站为其他网站增加评论功能。据其介绍,该网站每月有1.2亿的独立访问者。技术细节参考他们的幻灯片
  • bitbucket 基于HG的代码托管网站。
  • django官网 django官网本身使用django搭建,而其提供了代码。django官网的大多功能由整合的trac实现,所以网站的django代码没几行。
  • 海报网 据说这是目前流量最大的django站点。据我的了解,这个网站的流量也确实大的有些超乎想象,该网站应当有接近CSDN的流量。不过这个网站将大量的页面进行了静态化,如果以这个网站的标准来评价django的性能应当不够客观。
  • 好看簿 国内的另一个django站点,目前也有不错的流量。作为该网站的用户,我感觉网站的响应速度并不怎么快。看来好看簿在服务器优化方面还需要更多的努力。
  • instagram 在短时间内迅速崛起的一个iPhone应用,用户增长的非常快。从技术人员的角度看,instagram的迷人之处是在不足10人的情况下,服务了万用户。在这篇文章(What Powers Instagram: Hundreds of Instances, Dozens of Technologies)里,有介绍他们所用到的一些技术。

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项目的目录组织方式都各不相同。为解决该问题,也出现了一些相关项目。

  • dj-scaffold 我的django脚手架项目。提供命令dj-scaffold.py,用于生成一个基础的django项目模板。
  • django-startproject 也是用于生成项目模板的项目。我的不少代码都是参考这个项目的。
  • playdoh 顶着mozilla的名头,应当还是值得一看的吧。不过他的目录组织方式不太符合我的习惯的。

CMS

  • Django CMS Django CMS与其说是一个APP,倒不如说这是一个框架。Django CMS是目前开源Django CMS中功能最为完善的一个。Django CMS提供了插件接口,可以方便的以插件的方式进行扩展。此外,目前现成可用的插件也已经有一大堆了。

Forum

Django的论坛APP不少,但到就目前而言,还没有什么杀手级的APP。

  • DjangoBB 功能比较完整。不过我认为搞的有些复杂了,易用性一般。如果你贪图它相对强大的功能,又不怕麻烦的话,可以试试。
  • LBForum 我开发的论坛应用。优点是界面漂亮(提供了FluxBBV2EX两种界面风格),部署简单,功能方面就不怎么强大了。如果你想要一个简单易用的Django论坛系统,推荐这个。

Blog

用Django写Blog数量众多(可能是数量最多的Django应用了),我虽然也写了一个,但我是不会去用这些Django博客。Blog很重要的一点是那些漂亮的模板。如果使用这些小众的东西,实在是难以找到让人满意的模板。

  • zinnia 功能比较完善的一个Django博客,界面比较清爽。简单的看了一下她的代码,感觉写的很规范。比较看好这个博客系统。如果你想用django搭建自己的博客,推荐试试。

调试

  • django-debug-toolbar 为django站点增加调试功能,支持查看django生成的sql语句,及sql的执行时间等,功能强大。不过由于该组件使用了jquery,似乎会使用部分使用了jquery的站点无法正常工作。
  • sentry disqus的开源项目。将django的所有异常保存到数据库,并提供异常的察看界面。
  • django-devserver django开发服务器扩展。将SQL语句/执行时间等调试信息直接显示在控制台上,而且是以彩色的方式显示。

数据库升级

在项目开发过程中表结构的变动总是难免,django目前还不支持表结构的自动更新,不过相关的第三方app倒不少。

  • South South已经比较成熟了,就目前而言South是该类APP的不二选择。

注册、认证

  • django-userena 功能完善的注册模块,支持用户信息维护,头像上传,甚至还带了个站内消息模块。推荐使用。
  • Django-Socialauth 支持使用Facebook, Yahoo, Gmail, Twitter and Openid的帐号进行登陆认证。
  • django-socialregistration 支持OpenID, OAuth and Facebook的认证。似乎和Django-Socialauth差不多。没有对比过,希望用过的朋友给些心得。
  • django-registration 注册功能,支持帐户的邮件激活。该项目似乎已经停止维护了。可作为参考项目,不太建议在新项目中使用了。
  • django-auth-ldap Django的LDAP认证支持,使用LDAP的集成变得简单。

权限认证

  • django-guardian Django提供了精确到对象的权限控制API(比如那些人有权限编辑具体的某个文档),但Django并没有相关的实现。django-guardian给出了该API的实现,让你可以实现对具体对象的权限控制。

css/js静态资源压缩

  • django_compressor 自动对django模板中的css/js进行压缩处理,加快网站的加载速度。支持coffeescript以及less。

Tagging

为站点增加Tag功能

Avatar(用户头像)

  • django-avatar 当前首选。感觉复杂了些,而且我觉得支持多个头像啥的功能不是很实用,还增加了复杂度。
  • django-simple-avatar 我自己写的avatar APP,其中的不少代码来源于django-avatar。用起来比django-avatar要简单些。

翻页

  • django-pagination 一组翻页相关的utils,包括用于实现翻页的tag等。使用起来非常简单。是目前使用最多的分页APP。
  • django-paging 另一个翻页的APP,优点是支持jinja2作为模板。如果模板用了jinja2,可以考虑下。

搜索

RESTful

  • django-tastypie 编写RESTful API用的APP,此类APP中这个目前活跃程度以及发展情况来看是最佳选择。
  • django-piston bitbucket在使用,不过活跃程度比较低。用来写RESTful API的东西,据说很方便。未使用过,不多做评论。

消息队列(异步执行)

  • django-celery web应用中难免会有些很费时的操作需要作成异步处理(比如在后台发送邮件,更新索引等),django-celery就是为解决该问题出现的。

其他

  • django-extensions django一些扩展的集合。东西比较杂,具体使用还是去看看她的文档吧。
Last modified 5 years ago Last modified on 08/10/2012 10:51:25 AM