python flask的使用

2019-01-06  本文已影响0人  GendaLiu

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

以上是最基本的用法,下面说一下其他的操作
首先把运行的入口与请求分离开
在根目录下新建 script.py

from app import app

if __name__ == '__main__':
    app.run(host='xxx.xx.xx.xx', debug=True)
    # app.run()

新建名叫 app 的模块

image.png
到此我们把对 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也是刚刚学习。勿喷

上一篇下一篇

猜你喜欢

热点阅读