[[PageOutline]] = Django = == 我和Django == 我使用python的很大一部分原因就是django。虽然在以前也用过python,不过始终没有什么特别的感觉。然后接触到了django。可以说django非常对我的胃口,特别是他的admin给人的感觉特别的棒。[[BR]] django是个独断且固执的框架,框架里用的组件都是自己写的,而且往往会“知错不改”。所以用django就要试着thing in django,接受django所谓的设计哲学,如果接受不了那就换pylons或ROR什么的试试吧。[[BR]] django并不完美,但这并不妨碍她成为一个优秀的web开发框架。 == 资源 == * [http://www.djangoproject.com/ django官网] * [http://docs.djangoproject.com/en/dev/ django文档] * [http://www.woodpecker.org.cn/share/projects/django/django-stepbystep/newtest/doc/ Django Step by Step] 曾是最佳的django入门教程,只是这个教程是针对0.95的,现在不少地方已经有所变动。注:这里有个基于Django1.1的[http://bbs.quickbest.com.cn/thread-61139-1-1.html 2010版],看样子似乎是转帖,不知道原帖地址。 * [http://ericholscher.com/projects/reusable-app-docs/ django可复用app设计] * [http://github.com/lincolnloop/django-best-practices/tree/master django最佳实践] django可复用app设计 的一个更好的分支。个人为人这个文档是每个django开发人员必读的。 * [http://yangyubo.com/django-best-practices/ django最佳实践 中文翻译] * [http://www.djangobook.com/ django book] 一本免费的django电子书 * [http://djangobook.py3k.cn/ django book 中文翻译] * [http://www.djangosnippets.org/ djangosnippets] 一个关于django的代码片段网站,在里面可以找到一些应用的django代码片段。站点本身是用django写的,且开发源码。 * [http://www.djangosites.org/ djangosites] 这个网站里介绍了很多实用django搭建的站点。而且可以从这里找到很多带源代码的django站点。不过我个人觉得里面没有多少值得参考的站点代码。 == 使用django搭建的站点 == * [http://www.djangoproject.com/ django官网] django官网本身使用django搭建,而其提供了代码。django官网的大多功能由整合的trac实现,所以网站的django代码没几行。 * [http://www.haibao.cn/ 海报网] 据说这是目前流量最大的django站点。据我的了解,这个网站的流量也确实大的有些超乎想象,该网站应当有接近CSDN的流量。不过这个网站将大量的页面进行了静态化,如果以这个网站的标准来评价django的性能应当不够客观。 * [http://haokanbu.com/ 好看簿] 国内的另一个django站点,目前也有不错的流量。作为该网站的用户,我感觉网站的响应速度并不怎么快。看来好看簿在服务器优化方面还需要更多的努力。 == django的开源项目 == * [http://pinaxproject.com/ pinax] 这是我看到的最有价值的django开源项目。pinax可以看做是django的一个脚手架。她提供了快速开始一个新django项目的方法,同时对大量第三方app的使用方法进行了演示。django的app质量参差不齐,如果你想挑选app,那你可以看看pinax里都集成了哪些app。pinax里集成了的app通常都不至于太烂。此外pinax自身也带了一些有用的app,比如blog等。[[BR]]如果你想以最快的速度了解pinax,可以去 http://cloud27.com/ 看看。这是一个用pinax搭建的SNS网站。 * [http://www.satchmoproject.com/ Satchmo] 网店系统。看她的介绍,似乎已经有不少人在用这东西了。 * [http://www.getlfs.com/ LFS(Lightning Fast Shop)] 网店系统,就Demo来看似乎是倾向于房屋交易平台。陆陆续续的也有部分商业网站开始使用该系统了,[http://www.terrassenueberdachung-bearcounty.de/ 比如这个]。 * [http://code.google.com/p/reviewboard/ reviewboard] 非常有前途的一个code review工具。最开始是[http://www.vmware.com/ VMware]在用,来后给开源了。 == django的可重用app == === CMS === * [http://code.djangoproject.com/wiki/CMSAppsComparison Django CMS Apps Comparison] Django CMS Apps的比较 === Forum === * [http://code.djangoproject.com/wiki/ForumAppsComparison Django Forum Apps Comparison] Django Forum Apps的比较 * 虽然数量不少,但大多不太好用。功能比较完整的有[http://pybb.org/ PyBB],[http://sct.sphene.net/ Sphene],以及新出的[http://github.com/uswaretech/Dinette Dinette]。Dinette的默认模板漂亮些(采用[http://punbb.informer.com/ PunBB]的模板)。PyBB也有第三方提供的PunBB模板,虽没用过,不过想来也该比官方的漂亮不少。Sphene除论坛外还带了博客/wiki等模块,功能强大,但界面是个问题。 * [http://github.com/vicalloy/LBForum LBForum] 我开发的论坛应用。优点是界面漂亮,部署简单,功能方面就不怎么强大了。 === Blog === 用Django写Blog数量众多(可能是数量最多的Django应用了),我虽然也写了一个,但我是不会去用这些Django博客。Blog很重要的一点是那些漂亮的模板。如果使用这些小众的东西,实在是难以找到让人满意的模板。 * [http://byteflow.su/wiki byteflow] 功能比较完善的一个Django博客,而且已经有不少用户在用了。如果你想用Django搭个博客,这或许是一个不错的选择。 * [http://code.google.com/p/pylogs/ pylogs] 国产的博客系统,界面还比较漂亮。 * [http://code.google.com/p/dpress/ DPress] 我自己写的博客系统。功能完善,支持评论/文件上传/语法高亮等。很多功能都直接使用现成的django app来做,所以代码量很少。当然,就易用性而言,自然是比不上wordpress的。 === 调试 === * [http://github.com/robhudson/django-debug-toolbar/tree/master django-debug-toolbar] 为django站点增加调试功能,支持查看django生成的sql语句,及sql的执行时间等,功能强大。不过由于该组件使用了jquery,似乎会使用部分使用了jquery的站点无法正常工作。 * [http://code.google.com/p/django-db-log/ django-db-log] 将django的异常保存到数据库。 * [http://code.google.com/p/django-logging/ django-logging] 增加sql日志。直接在站点的网页上查看当前页面所使用sql语句以及执行时间。功能比django-debug-toolbar要弱不少,不过要是django-debug-toolbar把你的页面毁了,那就试试这个吧。 === 数据库升级 === 在项目开发过程中表结构的变动总是难免,django目前还不支持表结构的自动更新,不过相关的第三方app倒不少。这些app各有各的特色,具体如何选择就要看个人的喜好了。 * [http://code.djangoproject.com/wiki/SchemaEvolution SchemaEvolution] 介绍django数据库升级的wiki页面,相关的app都可以在这个页面找到。 * [http://south.aeracode.org/ South] 目前我在用的,也应当是目前发展的比较好的。 === 未分类 === * [http://bitbucket.org/ubernostrum/django-registration/wiki/Home django-registration] 注册功能,支持帐户的邮件激活。 * [http://code.google.com/p/django-tagging/ django-tagging] 为站点增加tagging功能 * [http://code.google.com/p/django-voting/ django-voting] 投票功能 * [http://code.google.com/p/django-ajax-validation/ django-ajax-validation] 使用ajax方式对表单进行校验,需要jquery的支持。这个组件只能校验,如果需要增加ajax提交表单的功能,还需要自己手动做些修改。 * [http://github.com/brosner/django-announcements/tree/master django-announcements] 发送站内公告,该公告只显示一次。可以设置公共的发送对象(所有人,指定用户,登陆用户)。 * [http://code.google.com/p/django-avatar/ django-avatar] 为用户增加设置个人头像的功能。支持 http://www.gravatar.com/ 和用户上传头像。个人觉得这个组件不是太好用,而且在文件名/用户名包含中文等信息时会出错,不建议使用。 * [http://wiki.github.com/jezdez/django-dbtemplates django-dbtemplates] 将django的template保存在数据库,并通过cache来加速template的加载。这样可以很方便的通过admin来编辑template。我想这东西应当可以用来实现一些简单的CMS功能,不过似乎用处不是太大。 * [http://code.google.com/p/django-microblogging/ django-microblogging] 类似Twitter的微型博客 * [http://code.google.com/p/django-notification/ django-notification] 消息分发组件,用来实现类似好友最新动态的功能。 * [http://code.google.com/p/django-pagination/ django-pagination] 一组翻页相关的utils,包括用于实现翻页的tag等。 * [http://code.google.com/p/django-robots/ django-robots] 通过django的admin来管理robots.txt。不过我觉得robots.txt这东西为什么还需要用admin来管理,还不如直接编辑来的方便。 * [http://code.google.com/p/django-messages/ django-messages] 实现站内消息的功能。目前该组件的功能的功能还比较弱,虽然作者在进行重构,但似乎进展缓慢。如果有需要我可能会自行对该组件进行一些增强。 * [http://code.google.com/p/django-threadedcomments/ django-threadedcomments] 评论组件,可以给任何的models增加评论功能。 * [http://code.google.com/p/django-command-extensions/ django-extensions] 一些全局的 management extensions。其中包括create_app的增强,使用werkzeug做开发服务器等功能。 * [http://code.google.com/p/django-uni-form/ django-uni-form] 以div方式渲染forms * [http://code.google.com/p/django-timezones/ django-timezones] 时区设置组件,允许用户设置自己所在的时区。 * [http://code.google.com/p/django-bookmarks/ django-bookmarks] 书签管理组件 * [http://code.google.com/p/django-email-confirmation/ django-email-confirmation] 在用户设置邮件地址后,给用户的邮箱发送一封确认邮件。用户点击邮件里的link来确认邮件地址的有效性。 * [http://code.google.com/p/django-mailer/ django-mailer] 邮件发送的增强组件,会在邮件发送失败时记录失败日志。 * [http://code.google.com/p/django-friends/ django-friends] 朋友组件,支持邀请用户成为好友等。 * [http://code.google.com/p/django-locations/ django-locations] 似乎是一个基于地区的社交网络,需要yaohoo map的支持。 * [http://code.google.com/p/django-oembed/ django-oembed] 方面媒体(视频等)内容嵌入,自动将媒体的连接转换成正确的html代码。 * [http://code.google.com/p/django-swaps/ django-swaps] 易物平台,比如用PSP换NDS啥的。 * [http://code.google.com/p/django-wikiapp/ django-wikiapp] wiki组件,支持多种wiki语法。不过目前该组件的功能还是比较简单,比如不支持附件。 * [http://code.google.com/p/django-mptt/ django-mptt] 用于生成树形列表的app。如果你认为它会自动给你生成一个完整的树,那你就错了,她只是一组工具。我感觉这东西并不是太好用,是否有什么优点,暂时不太清楚。 * [http://django-photologue.googlecode.com/ django-photologue] 图片管理,上传图片,缩略图显示等。 * [http://code.google.com/p/django-filebrowser/ django-filebrowser] django-admin的一个扩展,可以直接通过admin对服务器上的文件进行管理。DPress里有用到这东西,感觉不错。 * [http://code.google.com/p/goflow/ goflow] Django上的一个工作流引擎,设计灵感来源于OpenFlow。没用过这东西,对工作流也不太了解,所以也不知道这东西好不好。不过这似乎是django上唯一的一个工作流app。 * [http://code.google.com/p/sorl-thumbnail/ sorl-thumbnail] 缩略图组件,使用简单。只需要在模板中增加类似{% thumbnail [source] [size] [options] %}的标签即可自动生成图片的缩略图。 * [http://code.google.com/p/django-compressor/ django-compressor] 自动帮你对css/js进行压缩,减少网站流量。 * [http://haystacksearch.org/ Haystack] 全文搜索组件,提供对[http://lucene.apache.org/solr Solr] [http://whoosh.ca/ Whoosh] [http://xapian.org/ Xapian]的支持。就它的quick start来看是挺易用的。该项目托管在github,似乎还挺有人气。 * [http://github.com/dcramer/django-devserver django-devserver] django开发服务器扩展。将SQL语句/执行时间等调试信息直接显示在控制台上,而且是以彩色的方式显示。 * [http://code.google.com/p/django-grappelli/ Grappelli] Django Admin的一个第三方UI,感觉比官方的漂亮。界面是基于最新官方发布版本而非trunk。象我这样喜欢使用trunk的用户要注意了。而且Admin更多的还是给管理人员使用,界面的美观程度相当来说比较次要。 * [http://github.com/lincolnloop/django-cpserver django-cpserver] 使用cherrypy作为django的开发服务器。将django的部署太过繁琐,django内置的开发服务器功能又有些太弱。对于一些访问量不大的情况,使用cherrypy做web服务器不失为一个不错的解决方案。 * [http://bitbucket.org/psagers/django-auth-ldap/wiki/Home django-auth-ldap] 目前不少系统使用LDAP作统一认证方案,利用这个组件可以轻松的在django中集成LDAP认证。