flask 入门
# WSGI接口
https://www.liaoxuefeng.com/wiki/1016959663602400/1017805733037760 (opens new window)
# flask
# 简单使用
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods = ['GET', 'POST'])
def home():
return '<h1>home</h1>'
@app.route('/signin', methods=['GET'])
def signin_form():
return """
<form action="/signin" method="post">
<p><input name="username"></p>
<p><input name="password" type="password"></p>
<p><button type="submit">Sign In</button></p>
</form>
"""
@app.route('/signin', methods= ['POST'])
def signin():
if request.form['username'] == 'admin' and request.form['password'] == 'password':
return '<h3>hello admin</h3>'
else:
return '<h3>bad username or password</h3>'
在一个Web应用里,客户端和服务器上的Flask程序的交互可以简单概括为以下几步:
- 用户在浏览器输入URL访问某个资源。
- Flask接收用户请求并分析请求的URL。
- 为这个URL找到对应的处理函数。
- 执行函数并生成响应,返回给浏览器。
- 浏览器接收并解析响应,将信息显示在页面中。
在上面这些步骤中,大部分都由Flask完成,我们要做的只是建立处理请求的函数,并为其定义对应的URL规则。
app = Flask(__name__)
,初始化 app
,在项目根目录执行flask run
命令用来启动内置的开发服务器。
只需为函数附加app.route(
)装饰器,并传入URL规则作为参数,我们就可以让URL与函数建立关联。
@app.route('', methods=[''])
, 注册路由并规定请求方式。
这个过程我们称为注册路由(route),路由负责管理URL和函数之间的映射,而这个函数则被 则被称为视图函数(view function
)。
# Flask 扩展
扩展(extension)即使用Flask提供的API接口编写的Python库,可以为Flask程序添加各种各样的功能。
大部分Flask扩展用来集成其他库,作为Flask和其他库之间的薄薄一层胶水。
因为Flask扩展的编写有一些约定,所以初始化的过程大致相似。大部分扩展都会提供一个扩展类,实例化这个类,并传入我们创建的程序实例app作为参数,即可完成初始化过程。
通常,扩展会在传入的程序实例上注册一些处理函数,并加载一些配置。
# 项目配置
在一个项目中,你会用到许多配置:Flask提供的配置,扩展提供的配置,还有程序特定的配置。
和平时使用变量不同,这些配置变量都通过Flask对象的app.config
属性作为统一的接口来设置和获取,它指向的Config
类实际上是字典的子类,所以你可以像操作其他字典一样操作它。
app.config['ADMIN_NAME']='Peter'
# 模板和静态文件
默认情况下,模板文件存放在项目根目录中的templates
文件夹中,静态文件存放在static
文件夹下,
这两个文件夹需要和包含程序实例的模块处于同一个目录下.