根据发送请求在 flask 中更改 flask.app.request_class
Change flask.app.request_class in flask according to sending request
从客户端发送数据(名称字段编码 'euc-kr'),POST http://127.0.0.1,name=테스트&charset=euc-kr
在服务器(基于 flask)中接收数据,但只有 Unicode 和损坏的显示。
@app.route('/', methods='post'):
def post():
print request.charset #utf-8
print request.url_charset #utf-8
print type(request.form['name']) #unicode
所以我使用 Flask.Requsest class 的 subclass 来支持字符集:
# main.py
class EuckrRequest(Request):
url_charset = 'euc-kr'
charset = 'euc-kr'
app = Flask(__name__, static_url_path='', static_folder='static')
app.request_class=EuckrRequest
非常好而且没有损坏显示。但是我想根据POST数据中的charset
改变app.request_class
。
如何修改代码? app.request_context?, app.before_request?
动态更改请求 class 是错误的做法,
因为请求 class 很早就开始实例化
我建议您联系 request.environ
并根据收到的数据明确处理详细信息
我用request.get_data()
解决
import urllib
urllib.unquote(request.get_data()).decode('euc-kr')
从客户端发送数据(名称字段编码 'euc-kr'),POST http://127.0.0.1,name=테스트&charset=euc-kr
在服务器(基于 flask)中接收数据,但只有 Unicode 和损坏的显示。
@app.route('/', methods='post'):
def post():
print request.charset #utf-8
print request.url_charset #utf-8
print type(request.form['name']) #unicode
所以我使用 Flask.Requsest class 的 subclass 来支持字符集:
# main.py
class EuckrRequest(Request):
url_charset = 'euc-kr'
charset = 'euc-kr'
app = Flask(__name__, static_url_path='', static_folder='static')
app.request_class=EuckrRequest
非常好而且没有损坏显示。但是我想根据POST数据中的charset
改变app.request_class
。
如何修改代码? app.request_context?, app.before_request?
动态更改请求 class 是错误的做法, 因为请求 class 很早就开始实例化
我建议您联系 request.environ
并根据收到的数据明确处理详细信息
我用request.get_data()
import urllib
urllib.unquote(request.get_data()).decode('euc-kr')