Django的VS其他Python web框架?Django的VS其他Python web框架?(D

2019-05-13 09:35发布

我几乎尝试过每一个存在的Python Web框架,我花了很长的时间来实现有没有银弹框架,每一个都有自己的优点和缺点。 我开始了Snakelets和尽情享受能够在没有太多做文章一个较低的水平,以控制几乎所有的东西,后来我才发现的TurboGears ,从那以后我一直在使用它(1.x中)被。 像时装表演和Web控制台工具是非常宝贵的我。

但随着TurboGears的2出山带来WSGI支持和对Django和WSGI阵营之间的宗教辩论读了之后,我真的撕裂“做正确的方式”之间,比如,学习WSGI,花费宝贵的时间写功能已经存在于Django和其他的全堆栈架构,而不是使用Django或一些高层次的框架,做了我的一切。 有,我可以看到后者的缺点是很明显的:

  1. 我不是在这个过程中学习什么
  2. 如果我需要做任何事情较低的水平这将是一个痛苦
  3. 它采用身份验证只是一个基本的网站所需要的开销是疯了。 (IMO)

所以,我想我的问题是,这是更好的选择,或者是它只是一个见仁见智的,我要吮吸它,并使用Django,如果它达到我想要的东西用最少的大惊小怪(我想验证和CRUD接口我的数据库)? 我试过WERKZEUG,Glashammer,和朋友,但AuthKit和Repoze吓死我了,还有的涉及到刚刚设置基本身份验证的步数。 我看着塔,但文档似乎缺乏,和引用简单的功能,如身份验证或CRUD接口时,不同的维基页面和文档似乎相互矛盾,与版本和这些不同的黑客。


感谢S.洛特为指出,我不太清楚。 我的问题是:这下面的是,从长远来看是值得的,但在短期不痛 - 学习WSGI,或用“电池 - 包括”框架棒(例如,某种中间道路,任何人吗?)? 如果是后者,我将不胜感激的建议,以我是否应该给Django的另一次尝试,用的TurboGears 1.x的坚持,或者冒险进入一些其他的框架。

另外,我已经试过CherryPy的,但也似乎无法找到一个足够好的CRUD应用程序,我可以在扑通和使用权了。

Answer 1:

我建议我们再看一下TG2。 我认为人们没有注意到一些从上一版本已经取得了长足进步。 除了可用的公用设施日益WSGI堆栈有相当考虑几个TG2特定项目。 这里有几个亮点:

的TurboGears管理系统 -此CRUD界面,你的数据库是完全可定制的使用声明配置类。 它也与道场集成,为您无限滚动表。 服务器端验证也是自动化的。 该管理界面使用REST风格的URL和HTTP动词,这意味着它会很容易编程方式使用行业标准连接。

CrudRestController / RestController - TurboGears中提供了一个结构化的方式在你的控制器来处理服务。 提供您只需通过扩展我们的RestController使用标准的HTTP动词的能力。 结合Sprox与CrudRestController,你可以把污物在任何地方您的应用程序完全可定制的自动生成表格。 TurboGears中现在支持MIME类型为在URL中的文件扩展名,所以你可以有你的控制器渲染以.json,并使用它来呈现HTML(从控制器返回一本字典)相同的接口.XML

如果你点击的链接,你会看到我们有一个新的文档集与斯芬克斯,比过去的文档更广泛的内置。

用最好的Web服务器 , ORM和模板系统 (S)(选择你自己的)引擎盖下,很容易看出为什么TG是有道理的,谁想要得到持续快速的人,还是作为自己网站的增长具有可扩展性。

TurboGears中往往被视为试图击中一个移动的目标,但是我们对版本一致的,这意味着你将不必担心出后备箱的合作,以获得您所需要的最新功能。 即将于未来:更多TurboGears的扩展,使您的应用程序用的放心贴命令的生长功能。



Answer 2:

在Django和WSGI营地之间的宗教辩论

就好像你是一个稍微有点无所适从WSGI是什么Django是这似乎。 话说Django和WSGI的竞争有点像说,C和SQL竞相:你比较苹果和桔子。

Django是一个框架,WSGI是服务器如何与框架交互的协议(这是由Django的支持)。 最重要的是,学习直接使用WSGI是有点像学习大会。 这是一个很好的学习经验,但它不是真正的东西,你应该做的产品代码(也不是打算定)。

无论如何,我的建议是要弄清楚自己。 大多数框架有一个“做一小时维基/博客/民意调查”类型的运动。 花一点时间与每一个,找出你最喜欢哪一个。 毕竟,你怎么能不同的框架之间做出选择,如果你不愿意试试呢?



Answer 3:

我说你这个人有点过于悲观,“不学习任何东西”使用Django或类似的全栈框架,以及低估文档的价值和一个大型社区。 即使Django的还是有相当大的学习曲线; 如果它不这样做你想要的一切,它不喜欢的框架代码是坚不可摧的。

一些个人体验:我花了几年时间,开启和关闭,以扭转/ Nevow,TurboGears中和其他一些Python Web框架乱搞。 我从来没有完成任何事情,因为框架代码是永远未完成和正在改写了我的下面,文档往往是不存在的或错误的,唯一可行的支持是通过IRC(在那里我经常得到很好的建议,但觉得我是气势,如果我问过许多问题)。

相比之下,在过去的几年里,我弄掉Django的几个网站。 不像我以前的经验,他们实际上是部署和运行。 Django开发过程可能是缓慢和谨慎,但它会导致更bitrot和折旧和文件,实际上是有帮助的。

Django的HTTP认证的支持终于在去几个星期前,如果这就是你指的是在#3什么。



Answer 4:

你的问题似乎是“是值得学习的WSGI和你自己做的一切,”或者使用“全功能框架,做一切你。”

我会说,这是一个错误的二分法,有一个明显的第三条道路。 TurboGears的2试图提供从“为你做的一切”的风格框架的平滑路径可达WSGI中间件的理解,并且几乎定制框架的各个方面,以满足您的应用需求的能力。

我们可能不会成功在每一个级别的每一个地方,但是特别是如果你已经有了一定的TurboGears 1周的经验,我觉得TG2学习曲线会非常,起初很容易,你必须什么时候去更深的能力你需要它。

为了解决您的具体问题:

  • 我们提供的授权系统进行匹配你从TG1使用了一个盒子。
  • 我们提供了一个开箱即用“Django管理”之类叫tgext.admin接口,与道场的伟大工程做出花哨的电子表格一样的界面默认的。

我也想解决几个是在那里的其他选项,谈谈典型应用该类超支一点点。

  • CherryPy的。 我认为CherryPy的是一个伟大的网络服务器和一个漂亮的简约网络框架。 它不是基于WSGI国内,而且具有良好的WSGI支持,但它不会为您提供“全栈”的经验。 但对于必须既快速又不是特别适合于由Django的或TurboGears中提供的默认设置进行自定义设置,这是一个很好的解决方案。

  • Django的。 我认为Django是一个很不错的,对于开发网站tigtly集成系统。 如果你的工作的应用程序和风格非常适合在它的标准设置也可以是太棒了。 然而,如果您需要调整您的数据库使用,更换模板语言,使用不同的用户授权模型或以其他方式做不同的事情,你很可能会发现自己战斗的框架。

  • 主塔主塔像CherryPy的是一个伟大的简约网络框架。 不像CherryPy的是在整个系统中启用WSGI并提供了一些明智的默认像SQLAlchemy的和真子,可以帮助你很好地扩展。 新的官方文档是比旧的wiki文档这是你仿佛已经看了更好的质量。



Answer 5:

你已经采取了看看CherryPy的。 它是简约而高效和简单。 它是低级别够不它来获取他们的方式,但高到足以隐藏的复杂性。 如果我记得很清楚,TurboGears中建就可以了。

随着CherryPy的,你有多大的一切选择。 (模板框架,ORM如果想,后端等)



Answer 6:

了解WSGI

WSGI是太简单了。它基本上看起来像一个功能..

def application(environ, start_response) pass

接收到HTTP请求时,函数被调用。 environ包含各种数据(如请求URI等等等等), start_response是一个可调用功能,用于设置标头。

返回的值是网站的主体。

高清应用(ENVIRON,start_response):start_response( “200 OK”,[])返回 “...”

这一切就是这么简单,真的..这不是一个框架,但更多的是协议网络框架使用..

对于创建网站,使用WSGI是不是 “正道” -利用现有的框架是..但是,如果你正在写一个Python网络框架,然后使用WSGI是绝对正确的方式..

你使用哪种框架(CherryPy的,Django的,TurboGears的等)基本上是个人的喜好。在每个玩弄,看看哪个你最喜欢的,然后用它..有一个问题StackOverflow上(与一个伟大的回答)关于这个, “建议对直接的Python框架”



Answer 7:

你检查出的web2py? 最近最近评估许多Python Web框架之后,我决定采用这一个。 还检查了谷歌应用程序引擎,如果你还没有准备好。



Answer 8:

我想说正确的答案取决于你真正想要和需要的,因为从长远来看,取决于你需要从长远来看,什么什么会是值得的。 如果你的目标是让应用程序尽快部署那么“简单”的路线,即。 Django的,肯定是要走的路。 这正是你想要的一个良好的测试,充分证明系统的价值不能被低估。

在另一方面,如果你有时间去学习各种新事物可能适用于其他领域,并希望能有最广泛的范围进行定制,然后像TurboGears的优越。 TurboGears中为您提供了最大的灵活性,但你不得不花费大量的时间读取外部文档的东西像Repoze,SQLAlchemy的,和元史得到用它做任何有用的。 该TG2文档是故意比在某些情况下,因为它被认为是TG1文档不详细的,外部文档是比以前更好。 无论这样的事情是一个障碍或投资取决于你自己的要求。



Answer 9:

Django是绝对值得学习,听起来就像是将适合你的目的。 它配备了管理界面易于启动和运行,并且它使用身份验证。

至于“什么较低的水平”,如果你的意思是SQL,这是完全有可能成为你额外的关键字查询到推​​SQL。 风格上,你总是尽量避免尽可能。

至于“不学习任何东西” ......真正的问题是你的偏好是否将主要学习的东西较低级别或更高级别,这几乎是一个问题,任何人都可以在这里回答你。



Answer 10:

主塔似乎是一个伟大的工具对我来说:

  • 一个真正的Web框架(CherryPy的只是一个web服务器),
  • 小码基地 - 其他项目的再利用,
  • 完全写在心中WSGI的基础上,粘贴,
  • 让你的应用程序代码马上和触摸低水平位,如果有必要,

我用的CherryPy和TurboGears的,并期待在许多其他的框架,但他们都不是那么轻,生产作为主塔是。 检查在谷歌演示 。



Answer 11:

我是一个球迷的TurboGears,而这也正是为什么:控制和做的事情之间一个非常好的折衷权与方便。

你必须弥补自己的,当然心态。 也许你更喜欢自学少,也许更多。 也许是我喜欢的知识/控制(数据库为例)的区域,你可以不关心。 不要误会。 我没有任何特征的框架必然硬还是错。 这只是我的主观判断。

此外,我会建议的TurboGears 2,如果在所有可能的。 出来时,我认为它已经选择了默认值会比1.0好得多来讲(元史,吊架,SQLAlchemy的)



Answer 12:

我建议对的TurboGears他们已经做了最好的融合Python的世界的出色的工作。

WSGI:假设你正在开发TG2或一些其他的框架中等复杂程度的项目/商业解决方案说神交。 即使这些框架支持WSGI意思是谁在使用这些框架已经学习WSGI一个? 在大多数情况下,答案是我的意思是它的好号这方面的知识毫无疑问的。

WSGI知识可能是在这样的情况下更加有用

  • 要使用一些中间件或不作为例如标准堆栈的一部分提供了一些其他组件。 与TG或Authkit 神交没有ZODB 。
  • 你正在做一些整合。

CherryPy的是好的,但想到在交易的最后处理您的数据库提交/回滚,露出JSON,验证在这种情况下,TG,类似的Django框架做这一切为你。



Answer 13:

web2py的是这里的秘密武器。 千万不要错过检查出来。



文章来源: Django vs other Python web frameworks?