Pythonweb开发,我是这样理解的你觉得呢?

Pythonweb开发,我是这样理解的你觉得呢?_第1张图片
进群一起学习Python,欢迎各位大牛指教,小白求学。491308659邀请码(耀文)


如果想用 Python编写网站,有许多Python Web框架供选择(还不少呢)。一个Web框架至少要具备处理客户端请求和服务端响应的能力。框架可能具备下面这些特性中的一种或多种。

路由

解析URL并找到对应的服务端文件或者Python服务器代码。

模板

把服务端数据合并成HTML页面。

认证和授权

处理用户名、密码和权限。

Session

处理用户在多次请求之间需要存储的数据。

先简单提下两个框架(bottle和flask),之后会介绍其他框架,用它们编写带数据库的网站非常方便。无论想编写什么网站都能找到合适的框架。

Bottle只包含一个简单的Python文件,所以非常易于使用并且易于部署。Bottle并不是 Python 标准库的一部分,需要使用命令安装。

Bottle是非常优秀的入门框架,但如果需要更多功能,就试试Flask吧。Flask最初只是2010年的一个愚人节玩笑,但是由于大家反响非常热烈,作者Armin Ronacher把它变成了一个真正的框架。有趣的是,Flask这个名字也是一个文字游戏 。

flask和bottle都有瓶子的意思。

Flask和Bottle一样易用,同时还支持很多专业Web开发需要的扩展功能,比如 Facebook 认证和数据库集成。很多人都喜欢Flask,因为它既好用又强大。

Flask包中自带了werkzeugWSGI 库和jinja2模板库,可从终端安装。

非Python的Web服务器

标准库的http.server或Bottle和Flask自带的调试用服务器都很简单。在生产环境中,我们需要用更快的Web服务器运行Python。下面是常用的选择:

apache加上mod_wsgi模块

nginx加上uWSGI应用服务器

两者都很不错。apache可能是最流行的,nginx更稳定并且占用内存更少。

1. Apache

Apache(http://httpd.apache.org/)Web 服务器中最好用的 WSGI 模块是mod_wsgi(https://code.google.com/p/modwsgi/)。这个模块可以在Apache进程中运行Python代码,也可以在独立进程中运行Python代码并和Apache进行通信。

如果你的系统是Linux或者OS X,那你已经有apache了。如果是 Windows,你需要安装apache(http://httpd.apache.org/docs/current/platform/windows.html)。

2. Nginx Web服务器

Nginx(http://nginx.org/)Web服务器没有内嵌的Python模块。它通过一个独立的WSGI服务器(比如 uWSGI)来和Python程序通信。把它们结合在一起可以实现高性能并且可配置的Python Web开发平台。

可从官网(http://wiki.nginx.org/Install)安装nginx。还需要安装 uWSGI(http://uwsgidocs.readthedocs.org/en/latest/Install.html)。uWSGI 是一个大系统,有许多需要调节的内容。可以在 http://flask.pocoo.org/docs/0.10/deploying/uwsgi/ 看到如何结合Flask、nginx和uWSGI。

其他框架

网站和数据库就像花生酱和果冻,它们经常一起出现。小型框架,比如bottle和flask,不能直接支持数据库,得通过一些插件实现。

如果需要开发基于数据库的网站,且数据库的结构不会经常变化,那最好试试大型Python Web框架,主流的框架有以下这些。

django(https://www.djangoproject.com/)

是最流行的,尤其受大型网站青睐。学习django的理由很多,其中最重要的就是Python的招聘要求中经常需要django的开发经验。它有ORM功能,可以在网页中自动应用典型的数据库CRUD功能(创建、替换、更新和删除)。也可以不用django自带的 ORM,选择SQLAlchemy 或者直接使用 SQL 查询语句。

web2py(http://www.web2py.com/)

和django功能类似,只是风格不同。

pyramid(http://www.pylonsproject.org/)

诞生于最早的pylons项目,和django很像。

turbogears(http://turbogears.org/)

这个框架支持 ORM、多种数据库以及多种模板语言。

wheezy.web(http://pythonhosted.org/wheezy.web/)

这是一个比较新的框架,为性能而生。在最近的测试中,它比其他框架都快(http://mindref.blogspot.com/2012/10/python-web-routing-benchmark.html)。

https://wiki.python.org/moin/WebFrameworks这个在线表格能帮你比较选择使用哪个框架。

如果你的网站使用的是关系数据库,就可以不使用大型框架,直接用bottle、flask这类框架结合关系数据库模块就行。也可以使用 SQLAlchemy 来屏蔽数据库的差异,直接写通用 SQL 代码。相比特定的 ORM 语法,大多数程序员更熟悉 SQL。

当然,你完全可以不使用关系数据库。如果数据结构差异很大——不同行的同一列差别很大——那或许应该试试无模式数据库。我之前开发的一个网站一开始使用 NoSQL 数据库来存储数据,后来切换到一个关系数据库,然后又切换到另一个关系数据库,接着又切换到一个 NoSQL 数据库,最后又切换回了一个关系数据库。

其他Python Web服务器

下面是一些类似apache和nginx的基于 Python 的 WSGI 服务器,使用多进程或线程来处理并发请求:

uwsgi(http://projects.unbit.it/uwsgi/)

cherrypy(http://www.cherrypy.org/)

pylons(http://www.pylonsproject.org/)

下面是一些基于事件的服务器,只使用单线程但不会阻塞:

tornado(http://www.tornadoweb.org)

gevent(http://gevent.org/)

gunicorn(http://gunicorn.org/)

你可能感兴趣的:(Pythonweb开发,我是这样理解的你觉得呢?)