小团队的Python Web框架
我有四天的假期,打算利用这段时间把我们的Ruby on Rails应用程序用Python的网络框架重写,纯粹是为了好玩;而且为什么不换呢?Ruby on Rails很好,但总是变化,真的有点累。
我对Python的网络框架了解不多,知道一些像web.py、django、cherry.py、pylons/pyramid等。我们的需求是(可以不太相关):
- MVC(严格或不严格都可以)
- 小团队(2-3人,包括一个设计师)
- 使用起来有趣
- 支持REST
- 多级缓存(数据库查询、页面缓存)
- 支持Nginx(X-Accel-Redirect文件下载)
- 需要处理大量流量(大约120万次浏览)
- 支持URL重写(支持多个域名,不仅仅是子域名)
- 如果不流行也没关系
- 如果没有插件也没关系
- 可以使用SQL或NOSQL(尝试NOSQL可能会很有趣)
那么你有什么建议呢?
5 个回答
我推荐使用DJANGO或者TurboGears。
除了之前提到的那些框架(它们都是不错的选择),你还应该看看web2py。这个框架功能丰富,属于全栈框架,设置、学习和使用都非常简单。它最初是受到Ruby on Rails的启发,所以如果你在重写一个RoR应用,可能会觉得用它比其他一些Python框架更顺手。下面是一些关于你需求的详细信息:
- MVC(模型-视图-控制器):
- 支持REST:
- 多级缓存(数据库查询、页面缓存):
- 支持Nginx:
- 网址重写:
- 没有插件也没关系:
- 支持SQL或NOSQL(尝试NOSQL可能会很有趣):
- SQL支持:SQLite、PostgreSQL、MySQL、Oracle、MSSQL、FireBird、DB2、Informix、Ingres、Cubrid。
- NoSQL支持:Google App Engine、CouchDB(部分支持)、MongoDB(部分支持)
- 可以轻松添加额外的数据库适配器(SQL或NoSQL)。
这个框架正在积极开发中(每2到4周就会有新版本),而且承诺保持向后兼容,这样现有的应用在升级时不会出问题。如果你有任何问题,可以在友好且反应迅速的邮件列表上获得很多帮助。
我觉得大多数流行的框架都能满足你的需求,所以你可以从你要写的应用程序的角度来考虑这个问题。你希望多大程度上能够“开箱即用”?你需要用户管理功能吗?需要管理面板吗?
我使用Django,它非常适合那些不想重复写很多基础代码的人。有时候,想要让它按照你的想法工作可能会有点麻烦,但一旦你理解了它的复杂性,你就能很快完成任务。
关于Django:
MVC(严格或不严格)
不是严格的MVC,但类似 > http://www.djangobook.com/en/2.0/chapter05/#cn16
小团队(2-3人,包括一名设计师)
不确定框架会如何影响这一点,但确实,自己或和团队一起开发都很快,尤其是使用版本控制
使用起来很有趣
有很多很棒的文档,所以你不会花太多时间抓狂,可以很快上手,这点很好
支持REST
是的,作为一个库: > https://bitbucket.org/jesperndjjango-piston/wiki/Home
多级缓存(数据库查询,页面缓存)
没错 > https://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs
Nginx支持(X-Accel-Redirect文件下载)
不太确定这是否相关,但是的。我使用nginx和UWSGI,速度非常快
高流量(大约1,200,000次浏览)
是的 > Django能扩展吗?
URL重写(支持多个域名,不仅仅是子域名)
不太确定这一点
如果没有热度也没问题
虽然不如node-js流行,但确实有很多很好的文档
如果没有插件也没问题
有的……天哪,真的是有很多
支持SQL或NOSQL(尝试NOSQL可能很有趣)
开箱即用支持SQL,但也支持NOSQL > http://www.allbuttonspressed.com/projects/django-nonrel