...
 
Commits (2)
    https://gitcode.net/WyhPro/wyh_web_tools/-/commit/e4e86b1c856c4f7ae3514f64977856ab68c08f5a 安装flask-restful 2021-08-15T16:54:59+08:00 汪云辉 15655267350@163.com https://gitcode.net/WyhPro/wyh_web_tools/-/commit/fd4b952bfedec573ce5ee917630afe525f766775 安装包 2021-08-15T18:02:17+08:00 汪云辉 15655267350@163.com
......@@ -13,8 +13,8 @@ workon wyh
pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
pip install -i https://pypi.doubanio.com/simple/ flask==1.1.2
pip install -i https://pypi.doubanio.com/simple/ flask-restful
pip freeze > requirements.txt
```
2. 创建数据库
......
......@@ -3,7 +3,8 @@ import json
import sys
from datetime import timedelta
from flask import Flask, render_template, make_response, Response, jsonify, redirect, url_for, session, g, current_app
from flask import Flask, render_template, make_response, Response, jsonify, redirect, url_for, session, g, current_app, \
abort
from flask import request
from common.converter.converter import MobileConverter
......@@ -320,6 +321,45 @@ def route22():
return current_app.redis_cli
############################################################上下文#######################################################################
# g对象与请求钩子的综合案例
#
# 需求
#
# 构建认证机制
# 对于特定视图可以提供强制要求用户登录的限制
# 对于所有视图,无论是否强制要求用户登录,都可以在视图中尝试获取用户认证后的身份信息
############################################################上下文#######################################################################
@app.before_request
def authentication():
"""
利用before_request请求钩子,在进入所有视图前先尝试判断用户身份
:return:
"""
# TODO 此处利用鉴权机制(如cookie、session、jwt等)鉴别用户身份信息
# if 已登录用户,用户有身份信息
g.user_id = None
# else 未登录用户,用户无身份信息
# g.user_id = None
def login_required(func):
def wrapper(*args, **kwargs):
if g.user_id is not None:
return func(*args, **kwargs)
else:
abort(401)
return wrapper
@login_required
@app.route('/index_g')
def index_g():
return 'home page user_id={}'.format(g.user_id)
# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
print(app.url_map)
......
amqp==2.3.2
aniso8601==9.0.1
asgiref==3.4.1
click==8.0.1
certifi==2018.11.29
chardet==3.0.4
Click==7.0
colorama==0.4.4
Django==2.2.2
Flask==1.1.2
itsdangerous==2.0.1
Jinja2==3.0.1
MarkupSafe==2.0.1
Flask-RESTful==0.3.9
idna==2.8
itsdangerous==1.1.0
Jinja2==2.11.3
kombu==4.2.1
limits==1.3
MarkupSafe==1.1.0
monotonic==1.5
protobuf==3.6.1
PyMySQL==1.0.2
pytz==2021.1
python-engineio==3.1.2
pytz==2018.7
redis==2.10.6
requests==2.21.0
six==1.11.0
SQLAlchemy==1.2.14
sqlparse==0.4.1
tzlocal==1.5.1
urllib3==1.24.1
vine==1.1.4
Werkzeug==2.0.1
from flask import url_for, render_template, make_response, redirect, jsonify, session, abort
from flask import url_for, render_template, make_response, redirect, jsonify, session, abort, g
from flask import request
from main import app
......@@ -222,3 +222,20 @@ def index_error():
abort(404) # 主动抛出http错误
return "index"
#####################################应用上下文g变量##########################################
# g 作为 flask 程序全局的一个临时变量,充当中间媒介的作用,我们可以通过它在一次请求调用的多个函数间传递一些数据。每次请求都会重设这个变量。
#####################################应用上下文g变量##########################################
def db_query():
user_id = g.user_id
user_name = g.user_name
print('user_id={} user_name={}'.format(user_id, user_name))
@user_blu.route('/get_user_profile')
def get_user_profile():
g.user_id = 123
g.user_name = 'itcast'
db_query()
return 'hello world'