使用flask遇到的问题及解决方法
flask在客户端接收到的中文显示乱码
解决:
flask版本2.3.0以上:JSON_AS_ASCII 属性被废弃
app = Flask(__name__)
app.json.ensure_ascii = False # 解决中文乱码问题
flask版本2.2.5以下:
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False # 解决中文乱码问题
RuntimeError: The current Flask app is not registered with this 'SQLAlchemy' instance. Did you forget to call 'init_app', or did you create multiple 'SQLAlchemy' instances?
使用SQLAlchemy将自定义的model类通过flask写入数据库时遇到上述错误;
解决:
排查启动的客户端程序,在启动的manager.py中,引入了app = Flask(__name__),而在写入数据库中用的db.session(),引用的是之前统一定义的app文件__init__文件的db = SQLAlchemy(app),这样导致声明了两个实例,引发了报错,将manager中的app = Flask(__name__)替换为app的__init__中的db即可。
url中的转义问题
使用flask框架连接数据库,遇到密码中含有特殊字符‘@’,在做url解析时会将密码和host切分错误,导致连接失败;
解决:
对‘@’做url的转义,变为‘%40’,问题解决;在使用GET等方法发送请求时也会遇到类似问题,可将特殊符号做 url 转义;
%2C:',' %40:'@' %3A:':' %20:space %5B:'[' %5D:']'
启动flask debug模式报错问题
调试flask时使用debug模式启动报错,但正常启动没问题;
解决:设置 app.run(use_reloader=False),关闭热加载即可。
参考:
(必解决)新版Flask返回中文乱码解决,unicode编码_python3 flask 中文乱码-CSDN博客
GET请求地址中的URL编码[ %2C,%40... ]字符含义_url %40-CSDN博客
unknown option --port python调试Flask后端报错 Debug mode: on-CSDN博客