开发者社区> 问答> 正文

关于寻找支持py3k的Python网络框架的建议?

从一个月前开始学习Python,我发现该语言简单实用。

我是一名Web开发人员,但只有PHP经验,我使用过CakePHP或Zend之类的框架。我熟悉最流行的Django。但是,Django与Python 3不兼容。

有人知道支持Python 3的Python Web框架吗?我应该考虑使用没有框架的纯Python吗?如果是个好主意,我应该使用哪个Web服务器?带有uwsgi或Gunicorn之类的反向代理的Nginx,为什么?

展开
收起
祖安文状元 2020-02-22 15:51:02 784 0
1 条回答
写回答
取消 提交回答
  • Django的最新稳定版本是1.5,它确实支持Python3。请阅读公开声明:https : //docs.djangoproject.com/en/dev/topics/python3/

    Django 1.5是支持Python 3的Django的第一个版本,因此您可以期望比以前的版本有更多的错误,这些错误在Python 2的支持下非常可靠。但是Django核心团队非常认真地考虑合并社区中的补丁程序,因此这没什么大不了的。

    通常,您还有另外三个真正著名的Python网络框架:Flask,Bottle和Pyramid。前两个针对极简主义者。Bottle只是一个Python文件。通过添加路由功能,我可以肯定地说Bottle只是WSGI服务器之上的包装。就是这样。如果您需要最少的功能并从头开始构建所有内容,请使用Bottle。对于非常轻量级的API Web服务,这通常是理想的。

    烧瓶是新出名的家伙。它比Bottle重,但仍然非常简约。金字塔通常是Django的直接竞争对手。金字塔没有ORM或硬集成模板引擎。默认情况下,您可以使用Mako或Chameleon构建前端模板。没有ORM意味着您不仅限于关系数据库。Django的ORM是对象关系映射器,因此它绑定到关系数据库,例如MySQL,PostgreSQL或MariaDB或其他RDMB。如果您想使用非关系(NoSQL)的MongoDB,那么您将大为烦恼。您无法从使用Django的ORM中受益。金字塔允许您使用SQLAlchemy或其他ODM(用于NoSQL的对象文档映射器)代替Django中的硬集成ORM。

    此时,将Python 3与任何Python网络框架一起使用的问题是,大多数Python网络框架生态系统(即Django的生态系统,Flask,Pyramid的生态系统)与Python 3不兼容。许多最受欢迎的Django应用程序均不兼容声称支持Python 3,因此如果您想使用这些应用程序来构建Django网站,将会很不走运。

    但是我认为在1.5版本中,该生态系统将迅速转向与Python 3兼容的支持。如果您对Python足够熟悉,请查看Flask或Pyramid。我喜欢Pyramid,因为它带有您可以采用的身份验证策略。我们一直在使用Pyramid构建我们的Web api服务。如果您构建前端,则Django很好。我仍将API Web服务保留在Pyramid或Flask中。

    通常,应避免使用Apache + mod_wsgi。大多数人不知道如何调整Apache使其高效运行。默认情况下,Nginx将为您提供高吞吐量和有效的工作CPU内存消耗。是。我建议使用Gunicorn。

    您是什么意思纯Python?所有的Web框架都是使用Python构建的。好吧,我可以详细了解大多数人使用的Python称为CPython。还有其他Python实现。Python语言的实现可以是C,C ++,Java,Ruby,.NET甚至PHP。CPython是C。让您有些困惑,这里有一个Python编程语言“ PyPy”的实现,该实现在Python中实现了Python语言。

    好的。我要说清楚:这可能不是您所指的。如果您想自己构建一个网络框架,那很好。您只需要了解WSGI的工作原理,让正则表达式中间件根据URL将请求调度请求到视图函数即可完成。这实际上就是所有现代Python网络框架的需求。我上学期写了一个哑剧(虽然很恐怖)。

    2020-02-24 09:57:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载