从一个月前开始学习Python,我发现这种语言简单实用.
我是一名Web开发人员,但我只有PHP经验,我使用过像CakePHP或Zend这样的框架.我熟悉最受欢迎的Django.但是,Django与Python 3不兼容.
有人知道支持Python 3的Python Web框架吗?我应该考虑使用纯Python,没有框架吗?如果是个好主意,我应该使用哪个网络服务器? Nginx和uwsgi或Gunicorn这样的反向代理,为什么?
解决方法:
最新的Django稳定版本是1.5,它确实支持Python 3.请阅读公告:https://docs.djangoproject.com/en/dev/topics/python3/
Django 1.5是支持Python 3的Django的第一个版本,所以你可以期待比以前的版本更多的bug,这些版本在Python 2支持方面非常扎实.但Django核心团队非常认真地考虑合并来自社区的补丁,所以它不应该是一个太大的交易.
通常,您有三个非常着名的Python Web框架:Flask,Bottle和Pyramid.前两个是针对极简主义的. Bottle只是一个Python文件.我可以肯定地说,通过添加路由功能,Bottle只是WSGI服务器上的一个包装器.这就是它.如果您想要最少的功能,请使用Bottle,并从头开始构建所有内容.这通常适用于非常轻量级的API Web服务.
Flask是新的着名老兄.它比瓶子重,但仍然极简主义.金字塔通常是Django的直接竞争对手.金字塔没有ORM或硬集成模板引擎.默认情况下,您可以使用Mako或Chameleon构建前端模板.没有ORM意味着您不仅限于关系数据库. Django的ORM是对象关系映射器,因此它绑定到像MySQL,PostgreSQL或MariaDB或其他RDMB这样的关系数据库.如果你想使用非关系型(NoSQL)的MongoDB,那你几乎就是搞砸了.你不能从使用Django的ORM中受益. Pyramid允许您使用SQLAlchemy或其他ODM(NoSQL的对象文档映射器)而不是Django中的硬集成ORM.
此时使用Python 3与任何Python Web框架的问题在于,大多数Python Web框架生态系统(无论是Django的生态系统,Flask的,Pyramid的)都与Python 3不兼容.许多最受欢迎的Django应用程序都没有声称支持Python 3,所以如果你想使用这些应用程序来构建你的Django网站,你将会失败.
但是在1.5中我认为生态系统将迅速转向兼容Python 3的支持.
如果您对Python足够熟悉,请查看Flask或Pyramid.我喜欢金字塔,因为它附带了您可以采用的Auth政策.我们一直在使用Pyramid来构建我们的web api服务.如果你建立一个前端,Django是好的.我仍然会将我的API网络服务留在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语言.
好的.让我说完一点:那可能不是你所指的.如果您想自己构建一个Web框架,那很好.您只需要了解WSGI如何工作,让一个正则表达式中间件根据URL调度请求到视图函数,然后就完成了.这真的是所有现代Python Web框架的需求.上个学期我写了一个假人(虽然可怕).