从一个月前开始学习Python,我发现该语言简单实用。
我是一名Web开发人员,但只有PHP经验,我使用过CakePHP或Zend之类的框架。我熟悉最流行的Django。但是,Django与Python 3不兼容。
有人知道支持Python 3的Python Web框架吗?我应该考虑使用没有框架的纯Python吗?如果是个好主意,我应该使用哪个Web服务器?带有uwsgi或Gunicorn之类的反向代理的Nginx,为什么?
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网络框架的需求。我上学期写了一个哑剧(虽然很恐怖)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。