当MongoDB用作数据库时使用哪个python web框架(django或django-norel或pyramid)

lov*_*esh 12 python django mongodb pyramid

我使用MongoDB作为我的主要(并且直到现在)数据库,因为谷歌及其提供的链接我在Django或金字塔之间感到困惑.

我对python很满意,但从未在python中进行过Web开发(我已经在PHP中完成了).现在因为我将使用Mongo所以我不会使用Django ORM会带走人们与Django相关联的易用性吗?

我是Django的新手(只需几个小时),所以我不确定ORM影响框架的哪些部分.

或者我应该使用带有django mongodb引擎的django fork django-norel(虽然它们没有被主动维护)或者我应该使用Pyramid,因为我打算使用jinja2作为我的模板层,这使得django的两部分对我无用.

从django中取出这些电池后,它仍然是一个有截止日期的人的框架吗?

建议吗?

Bri*_*jes 12

一两年前,我还在django和金字塔之间决定使用mongodb来构建一个高性能的Web应用程序.我最终选择了金字塔:

优点:

  • 对于完整的堆栈框架,金字塔非常轻.引擎盖下发生了极少量的"魔术".我能够把头包裹在所有的碎片上.
  • 它不像Django那样自以为是.您可以相对轻松地插入和播放您需要的任何模板引擎或数据库.
  • Pyramid与其他完整堆栈框架之间的性能基准测试给我留下了深刻的印象.
  • 100%代码覆盖率的"Pylons/Pyramid"文化和"只为你吃的东西买单"对我自己的发展风格很有吸引力.

缺点:

  • 社区正在增长,但仍然没有Django那么成熟
  • 有很多文档,但它不像那里的一些Django文档那样健壮
  • 缺乏"魔术"和初学者友好的文档会使学习曲线更加陡峭.

至于在MongoDB中使用ORM; 我建议你先尝试不用一个建筑.在尝试了几个mongodb ORM之后,我最终回到普通pymongo用Colander或Validictory进行验证.Pymongo已经非常像ORM,快速且灵活.我觉得额外的抽象层剥夺了这种灵活性,并使我编写了比需要更多的代码.

  • 我还没有钻研过Flask的小测试应用程序.我的理解是像Flask和Bottle这样的微框架专注于较小的网络应用程序,随着应用程序变得庞大和复杂化而变得笨拙:http://pyramid.readthedocs.org/en/1.0-branch/designdefense.html#microframeworks-小世界.此外,Chris McDonough还有一个新视频,它深入研究了django和金字塔之间的差异http://youtu.be/eN7h6ZbzMy0. (4认同)

Edw*_*rdr 9

我将建议一个尚未提及的替代方案:Flask.Flask有一个非常棒的(尽管比Django小)社区,并且在扩展目录中有许多可用于常见Web应用扩展的扩展.

Flask有几个MongoDB扩展,它有助于将MongoDB集成到框架中,但我也强烈推荐使用mongoengine ORM.其中一名致力于mongoengine的人已经发布了Flask整合扩展,Flask-MongoEngine.