• xadmin后台导出时gunicorn报错ascii


      django + xadmin + nginx + gunicorn部署后,xadmin后台导出model数据报错,gunicorn日志记录为:UnicodeEncodeError: 'ascii' codec can't encode characters in position 223-240: ordinal not in range(128)。

      深刻体会到本地环境,代码一切ok,并不代表测试环境ok,测试环境ok,并不代表预发环境ok,预发环境ok,生产环境可能会ok!每一个环境最好不要偷懒每个功能都需要一一测一下。

      报错信息说明是编码问题,找到xadmin源码下载文件的py文件(xadmin/plugins/export.py),具体修改如下:

    # 227行开始注释两行,并修改如下
            # response['Content-Disposition'] = ('attachment; filename=%s.%s' % (
            #     file_name, file_type)).encode('utf-8')
    
            # 修复导出时gunicorn报错ascii
            from urllib.parse import quote
            response["Content-Disposition"] = 
                "attachment; " 
                "filenane=%s.%s;" 
                "filename*=UTF-8''%s.%s" %(
                    quote(file_name),file_type,
                    quote(file_name),file_type
                )

      网上还有中说法是在supervisor配置文件加上:environment=LANG="en_US.utf8", LC_ALL="en_US.UTF-8", LC_LANG="en_US.UTF-8",亲测好像没有效果。不得不说,编码是个神坑~

    实践出真知~
  • 相关阅读:
    QSettings读写注册表、配置文件
    QSettings介绍
    桥接模式
    Qt之启动外部程序
    StringJDBC更改数据库的两种方式
    写代码注意事项
    maven仓库
    java关闭流,解压缩后的清除
    Java删除文件夹和文件
    浏览器禁用后退
  • 原文地址:https://www.cnblogs.com/NolaLi/p/9816255.html
Copyright © 2020-2023  润新知