使用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博客

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Flask和JavaScript解决"Content-Security-Policy"头缺失问题方法如下: 1. 在Flask应用程序中设置"Content-Security-Policy"头。可以通过在应用程序的路由函数中使用`@app.after_request`装饰器来设置响应头。示例代码如下: ```python from flask import Flask, make_response app = Flask(__name__) @app.after_request def add_csp_header(response): response.headers['Content-Security-Policy'] = "default-src 'self'" return response ``` 上述代码将在每个响应中添加"Content-Security-Policy"头,并将其值设置为"default-src 'self'",表示只允许加载来自同一域名的资源。 2. 在JavaScript中处理跨域请求。如果你的JavaScript代码需要从不同的域名加载资源,可能会遇到"Access-Control-Allow-Origin"错误。为了解决这个问题,可以在服务器端设置响应头,允许来自其他域名的请求。示例代码如下: ```python from flask import Flask, make_response app = Flask(__name__) @app.after_request def add_cors_header(response): response.headers['Access-Control-Allow-Origin'] = '*' return response ``` 上述代码将在每个响应中添加"Access-Control-Allow-Origin"头,并将其值设置为"*",表示允许来自任何域名的请求。 3. 在前端页面中引入JavaScript文件。在HTML文件中,使用`<script>`标签引入JavaScript文件,并确保该文件位于与HTML文件相同的域名下。示例代码如下: ```html <!DOCTYPE html> <html> <head> <title>Flask + JavaScript</title> <script src="static/js/script.js"></script> </head> <body> <!-- 页面内容 --> </body> </html> ``` 上述代码将在页面中引入名为"script.js"的JavaScript文件,该文件位于"static/js/"目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值