什么是一个好的轻量级Python MVC框架?
我知道那里有很多Python框架。 你们能把我指向正确的方向吗? 我主要关心的是简单性,我不需要太多额外的function。 以下是我想要(或不想)的其他一些事情:
- 不关心ORM,只是希望它能与MySQL一起工作
- 有可configuration的路线
- 支持布局
web2py是265Kbytes的源代码和1.2MB的全部(与Django 4.6MB比较)。 然而,web2py将做你需要的一切(pipe理会话,cookies,请求,响应,caching,国际化,错误/门票,GAE数据库抽象,SQLite,MSSQL,MySQL,Postgres,甲骨文,FireBird等) – 只需解压并点击它 – 你就可以在浏览器中进行开发。
Web2py具有路由和反向路由。
Web2py有一个分层模板系统,这意味着一个视图可以扩展一个可以扩展另一个布局的布局,等等视图也可以包含其他视图。
既然你明确地不想要一个ORM,如果我是你,我会远离“全栈”框架。 Python的WSGI标准为您提供了大量简单易用的选项,它们将为您提供所需的function,甚至可以让您select自己的工作方式。
下面是一个示例:对于URL调度,您可以使用路由 ,通过Rails的URL调度样式使用哪个端口。 或者,您可以将Selector与WebOb相结合,如果这种风格更适合您的话。
对于“布局”,如果您需要无法运行代码的模板,则可以使用function强大的Jinja2 。 或者, Mako,如果你喜欢能够在你的模板中混合一些代码。 您甚至可以使用Deliverance来控制由多个应用甚至多种语言组成的页面布局!
一个完整的web框架是很好的,它为您提供了一堆select,让您只关注应用程序的build设。 但是,我上面列出的select是一个很好的集合,让你去build立自己的。 如果沿着这条路走下去,你会发现如果你需要的话,可以很容易地插入Beaker进行caching和会话,或者WebError来帮助你进行debugging。
就我个人而言,我是ORM(尤其是SQLAlchemy )的忠实拥趸,但是如果你打算把ORM免费和轻量级地整合起来,那么你就不能把Python中可用的伟大的WSGI组件结合起来。
给web.py一试。 这很简单,可以提供你正在寻找的极简主义。
主塔。
它比django好得多,而且不会出现糟糕的ORM。
人们已经给出了许多关于Web应用程序框架的答案,但是MVC(或者任何其他范例)不仅仅与web绑定。 这只是为了清楚。
如果你是简单的MVC,主塔更严格的方式符合范式。 Django解释了MVC,他们把它称为model-template-view ,但angular色分离的想法是一样的。 实际的select是一个个人的品味问题,虽然这两个我都认为lightweigth (主塔看起来更轻 ,但实际上是不是,最近Django收集了一些额外的重量 – 很可能你不会适合甚至像个人博客小应用程序20MB驻留内存)。
当然,没有什么会阻止你写自己的框架,例如。 与WebOb 。 你可以把它做得像你想要的一样轻松 (学习很多事情)。
如果你想要一些简单的东西,而不必自己创build框架 ,但仍然不是全包(Django),你可能想尝试一下CherryPy 。 它几乎可以使用任何调度程序 (页面处理程序/ URL路由系统)。 你也可以select自己的模板引擎, Genshi是我最喜欢的。
说到桌面应用程序, Dabo是个不错的select。 它是一个支持MySql,Postgresql,Firebird和Sqlite的wxPython之上的跨平台框架。
你想要web2py。 核实:
- 不关心ORM,只是希望它能与MySQL一起工作
Web2py没有ORM,但是它有一个SQL语法包装器,使得SQL更容易实现。
- 有可configuration的路线
- 支持布局
… web2py有这两个。
而web2py比django / rails /轻量级更重要。 这是非常容易学习。 学习MVC框架最难的是脚本,ORM和(使用django)模板语言。 但web2py摆脱了脚本,简化了ORM,模板语言只是一个聪明的方式Python。
结帐https://github.com/salimane/bottle-mvc或https://github.com/salimane/flask-mvc 。 他们是样板,可以让你开始与控制器,在不同的文件夹模型。 他们基于瓶子和烧瓶微框架,没有无用的function,他们给你灵活地插入任何你想要的模块。
是的,我会说Django肯定是要走的路。 它的模块化devise确保您可以混合和匹配组件(ORM,模板引擎,URL调度等)。而不是被框架提供给您的组件所阻塞,您可以用任何第三方等价物replace它。
Django的!
Google App Engine使用它。
我也用它来做我自己的宠物项目。
web2py的! django称控制器为一个视图,“nuf说。
如果你想简单的使用web2py或pylons。 Django是好的…但是学习曲线很陡
Django的。 您不必使用附加function,而且devise良好,因此您可以根据需要混合使用第三方库。
我真的是新的Python,但我试着安静一些,特别是Django和web2py。 我喜欢web2py的简单性,几天后我就可以创build一个中等复杂的网站。 它有一套function强大的DAL,代码生成,HTML hlpers,对我来说最重要的function是在网站上的文档是相当完整的。
我会看看主塔 ; 它重量轻,速度快。
我也在Django船上。 以下是几个原因:
- 您可能会用Django的pipe理界面节省时间,避免手动查询。
- Django的模板系统非常棒
- Django有一个WONDERFUL 社区 ,非常乐于帮助(请参阅freenode上的 #django)
Django是我的build议。
你可以在这里find一个介绍 (Jacob Kaplan-Moss的Google Tech Talk):
你也许还想看看Adrian Holovaty在 DePaul大学的Snakes and Rubies上的讲话 :
虽然并不是所有的Python框架都明确地支持MVC,但通过从用户交互逻辑(控制器)和模板(视图)中分离数据逻辑(模型)来创build使用MVC模式的网站通常是微不足道的。
http://docs.python.org/howto/webservers.html#model-view-controller