Python和Web–使用Web框架之Flask简单用例
? 对于重要的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路径告诉它。脚本名称powers.py,示例代码如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def powers(n = 10):
return ', '.join(str(2**i) for i in range(n))
本人是macOS系统,让Flask运行它,代码如下:
(venv) liuxiaowei@MacBookAir 使用Web框架 % export FLASK_APP=powers.py
(venv) liuxiaowei@MacBookAir 使用Web框架 % flask run
* Serving Flask app 'powers.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* 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/<int:n>’)。示例代码如下:
from flask import Flask
app = Flask(__name__)
@app.route('/<int:n>')
def powers(n = 10):
return ', '.join(str(2**i) for i in range(n))
这样修改后,如果重新启动Flask,并访问URLhttp://127.0.0.1:5000/powers/3,将得到输出1, 2, 4。如下图:
注 意
(venv) liuxiaowei@MacBookAir 使用Web框架 % export FLASK_APP=powers.py
如果如下带空格输入,就会报错:
(venv) liuxiaowei@MacBookAir 使用Web框架 % export FLASK_APP = powers.py
zsh: bad assignment
备注
Flask还有很多其他功能,其文档也很容易理解。如果尝试简单的服务器端Web应用开发,建议看看这些文档。
|