>>> from env_helper import info; info()
页面更新时间: 2020-07-05 19:25:30
操作系统/OS: Linux-4.19.0-9-amd64-x86_64-with-debian-10.4 ;Python: 3.7.3

3.3. 使用 Web 框架

对于重要的Web应用,大多数人都不会直接为其编写CGI脚本,而是选择使用Web框架,因 为它会替你完成很多繁重的工作。这样的框架有很多,后面将提及其中的几个,但现在要将注意 力放在既简单又有用的Flask(http://flask.pocoo.org )上。使用pip很容易安装这个框架。

$ pip install flask

假设你编写了一个计算幂的函数。

>>> def powers(n=10):
>>>     return ', '.join(str(2**i) for i in range(n))

而且想让每个人都能使用它!要使用Flask来实现这个目标,首先使用合适的名称实例化Flask 类,并将这个函数的URL路径告诉它。

>>> from flask import Flask
>>> app = Flask(__name__)
>>>
>>> @app.route('/')
>>> def powers(n=10):
>>>     return ', '.join(str(2**i) for i in range(n))
>>> powers(n=10)
'1, 2, 4, 8, 16, 32, 64, 128, 256, 512'

如果这个脚本名为powers.py,就可像下面这样让Flask运行它(这里假设是在UNIX风格的 shell中):

$ export FLASK_APP=powers.py
$ flask run
 *Serving Flask app "powers"
 *Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

最后两行是Flask的输出。如果你在浏览器中输入上面的URL,将看到函数 powers 返回的字符 串。 你也可给这个函数指定更具体的路径。例如,如果使用 route('/powers') 而不是 ('/') , 这个 函数将位于 http://127.0.0.1:5000/powers 。这样,你就可设置多个函数,每个函数的URL各不相同。

你甚至能向函数提供参数。要指定参数,可使用尖括号,例如’/powers/‘。这样,斜杠 后面的内容将作为关键字参数n的值。但这样提供的是一个字符串,而这里需要的是一个整数。 为执行转换,可使用route(’/powers/’)。这样修改后,如果重新启动Flask,并访问URL http://127.0.0.1:5000/powers/3 ,将得到输出1, 2, 4。

Flask还有很多其他的功能,其文档也很容易理解。如果要尝试简单的服务器端Web应用开发, 建议你看看这些文档。

3.3.1. 其他 Web 应用框架

还有很多其他的Web框架,大小皆有。有的晦涩难懂,有些定期召开推广会议。

Python Web应用框架

名 称

网 站

Django

https://djangoproject.com

TurboGears

http://turbogears.org

web2py

http://web2py.com

Grok

https://pypi.python.org/pypi/grok

Zope2

https://pypi.python.org/pypi/Zope2

Pyramid

https://trypyramid.com