python flask的使用
flask 是比较流行的Web框架
flask的优缺点我不作论述,读者可自行搜索
首先安装
$ pip install flask
如果读者是使用 pycharm 进行开发的
可以在新建项目时,在左侧选择一个flask项目来新建,成功后可以对其的项目结构进行了解。
本人不建议直接使用pycharm进行flask的项目新建,原因是不能对其中代码进行修改调试。
安装成功后,新建一个app.py
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():
# 需要从request对象读取表单内容:
if request.form['username']=='admin' and request.form['password']=='password':
return '<h3>Hello, admin!</h3>'
return '<h3>Bad username or password.</h3>'
if __name__ == '__main__':
app.run()
运行 app.py
$ python app.py
- Running on http://127.0.0.1:5000/
就可以进行操作测试了
以上是最基本的用法,下面说一下其他的操作
首先把运行的入口与请求分离开
在根目录下新建 script.py
from app import app
if __name__ == '__main__':
app.run(host='xxx.xx.xx.xx', debug=True)
# app.run()
新建名叫 app 的模块
到此我们把对 flask 的配置代码,全部在 init.py 中进行处理
from flask import Flask
app = Flask(__name__, template_folder='../templates', static_folder='../static')
app.config.from_object(Config)
.................. 省略一些代码
(插一句:如果发生找不到资源文件的问题发生,通过template_folder='../templates', static_folder='../static' 指定资源路径)
到此有的读者会发现,对请求的处理要分离去到哪里?先看一下下面的结构
image.png
可以看出我们的请求有 user用户的模块,动态trends的模块。
我们分别在user和trends中处理相关的模块请求。
既然分开,那么请求的地址也可以通过不同的前缀来区别对应的模块
http://127.0.0.1:5000/user ----- 对应 user
http://127.0.0.1:5000/trends ----- 对应 trends
flask 对此需求也做了相关的处理
user = Blueprint('user', __name__)
trends = Blueprint('trends', __name__)
通过上面的代码,我们需要更改一下相应的代码
user = Blueprint('user', __name__)
# 此处的对应请求地址是 http://127.0.0.1:5000/user/home
@user.route('/home', methods=['GET', 'POST'])
def home():
return '<h1>Home</h1>'
在我们使用 Blueprint 函数时 需要在 flask 中注册一下,
我们在app模块init.py 中增加以下代码
app.register_blueprint(user, url_prefix='/user')
app.register_blueprint(trends, url_prefix='/trends')
到此我们完成了简单的分离处理。
在项目中,我们有的时候需要对所有的请求进行监控。flask也有相关的处理方法
我们在app模块init.py 中增加以下代码
# 处理第一个请求之前运行.
@app.before_first_request
def bf_first_request():
print('----------------------------------- 此处处理第一次请求之前')
# 在处理每次请求之前运行.
@app.before_request
def bf_request():
print('----------------------------------- before_request ', request.headers)
# 在每次请求之后运行 (请求没有异常)
@app.after_request
def af_request(param):
print(f'----------------------------------- after_request {param}')
return param
# 每一个请求之后运行,即使遇到了异常
@appteardown_request
第一次写文章,python也是刚刚学习。勿喷