从django切换到什么框架是值得的

pih*_*agy 4 django frameworks

我使用的最后一个框架是Django.我喜欢这里的很多东西,比如:

  • 项目结构很简单 - 没有太多的目录和文件
  • 管理界面
  • 很棒的文档
  • XML导出导入
  • Form对象的概念:在定义表单后,您可以在1行中显示表单,甚至可以从数据库行(来自orm定义)创建表单.[于2009年12月30日增加]
  • i18n [于2009年12月31日添加]

但是有一些限制:

  • 截至2009年12月没有模型验证
  • 只要你不需要自定义模板标签,模板系统就是好的
    • 将设计与逻辑分开的想法似乎很好,令人沮丧的是,我无法在视图中加总n个数字[编辑于2009年12月30日]
    • 模板语言不是设计师友好的
    • 自定义模板标记中的ex的堆栈跟踪是无用的(如果与python 2.6一起使用).有一个补丁,但它将在1.2中进入django
  • django的orm(连接遗留系统)
    • 无法处理blob字段
    • 无法处理多列pk字段

是否有另一个具有django优点的Web框架,并且没有列出的限制?或者是否可以解决django中的一些问题?

ps:我会根据答案更新列表.我相信还有更多方面需要讨论......


我可以自由地使用任何其他语言的框架,只要我可以在linux服务器上安装这些东西


cet*_*eek 14

不试图保卫Django(这不是我的工作!:-))只是试图给你一些关于你的限制列表的指示......

截至2009年12月没有模型验证

你到底是什么意思?验证在表单级别可用...并且您始终可以覆盖该save()方法以实现您想要的任何逻辑并停止保存操作...您能举例说明一个场景吗?

只要您不需要自定义模板标签,模板系统就是好的,将设计与逻辑分开的想法似乎很好,令人沮丧的是,我无法在视图中总结2个数字

添加两个号码?

也就是说,你没有和Django的模板系统结婚.例如,你可以使用Jinja2.

模板语言不是设计师友好的

呃......为什么?我工作的大多数设计师使用模板语言没有问题,比Django更复杂......你能举一个你认为不友好的例子吗?也许有一种解决方法.

自定义模板标记中的ex的堆栈跟踪是无用的(如果与python 2.6一起使用).有一个补丁,但它将在1.2中进入django

我没有遇到过您讨论的堆栈跟踪问题.你可以随时安装补丁,直到Django 1.2出现.所以看来你有一个解决方案.

django的orm(连接到遗留系统)无法处理blob字段

如果您正在处理在数据库中存储文件的需要,也许您应该查看django-storages的DatabaseStorage.

无法处理多列pk字段

这一点,以及多个数据库支持,是真正需要改进的领域 - 我同意.

我想你不能对具有多列pk要求的模型使用模型(只是直接的SQL)(是的,它会杀死管理员,但它是可行的).坦率地说 - 我的模型中没有这个问题,因为我更喜欢代理主键 - 如果遗留模型在我的路上,我会添加一个代理主键 - 所有遗留代码应该继续工作,Django会很高兴.但我确实可以完全控制数据库表,这可能不是你的情况.

多列主键是1.2版本的中优先级.

Multidb是1.2版本的高优先级.

1.2版本预计将于2010年3月发布.当然,约会不是一成不变的.

鉴于我对其他框架的经验,我宁愿解决我的问题并坚持使用Django.


小智 5

虽然你可以在某种程度上交换出你不喜欢的Django,但是其他框架比Django更容易实现.

假设你想坚持使用Python,那么下一个最好的选择就是Pylons.你有SQLAlchemy + Formencode进行验证; Mako/Jinja/Genshi都提供了更灵活的Django模板替代品.

另一种选择是使用"反框架"或用于WSGI处理,数据映射等的库工具包.我最喜欢的技巧包括Werkzeug + SQLAlchemy + Jinja2,但实际上适合您的需求和编程风格.

值得注意的是,Pylons和更多DIY框架需要比Django更好地理解Python,即使是琐碎的项目也是如此.这并不是一件坏事:不过我会推荐Python新手首先让他们认识Django,因为它有更好的文档和更少的粗糙边缘.一旦你更自信,那就去看看吧,因为正如你所发现的那样,Django并不总是最好的工具.