Django-compressor: RemovedInDjango31警告:不建议使用FILE_CHARSET设置

创建于 2019-04-02  ·  10评论  ·  资料来源: django-compressor/django-compressor

我在Django环境中运行测试时遇到以下警告。

/path/to/lib/python3.7/site-packages/compressor/filters/base.py:115: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
    default_encoding = settings.FILE_CHARSET

似乎不鼓励使用settings.FILE_CHARSET

自2.2版起弃用:
不推荐使用此设置。 从Django 3.1开始,从磁盘读取的文件必须使用UTF-8编码。

版本:

  • Django 2.2.0
  • django-compressor 2.2

最有用的评论

似乎对settings.FILE_CHARSET属性的任何访问,即使测试是否被覆盖,也会触发该警告。 这正是我们要检查是否需要使用utf-8默认值的操作。

如果我们想保持向后兼容性,最简单的方法是使用以下类似的代码禁用此特定代码行的警告:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="popo popo")
    warnings.warn("popo popo")  # the code that will trigger the warning
# warnings are back to normal filtering from here

如果这样的解决方案适合您,我可以提供PR。

所有10条评论

发行说明说:

FILE_CHARSET设置已弃用。 从Django 3.1开始,从磁盘读取的文件必须使用UTF-8编码。

仅将django-compressor中的所有settings.FILE_CHARSET替换为utf-8即可解决此问题,也许...吗?

感谢您的举报。 用utf-8替换所有出现的内容可能会给实际使用此设置的用户带来麻烦。 正确的解决方法可能是使用设置(如果存在),而不设置有问题的参数(如果不存在)。

@karyon谢谢您的回复。 我试图写一个补丁。 如果您的理解正确,我希望您进行审查。

这是我第一次将PR发送到此仓库,我可能错过了一些重要的东西。 如果您发现任何错误,请告诉我。 先感谢您。

固定在#934

新代码似乎在我的设置中引起了非常类似的警告:

  /usr/local/lib/python3.7/site-packages/compressor/filters/base.py:123: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
    settings.FILE_CHARSET if settings.is_overridden('FILE_CHARSET') else

django-compressor==2.3
Django==2.2.2

似乎对settings.FILE_CHARSET属性的任何访问,即使测试是否被覆盖,也会触发该警告。 这正是我们要检查是否需要使用utf-8默认值的操作。

如果我们想保持向后兼容性,最简单的方法是使用以下类似的代码禁用此特定代码行的警告:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="popo popo")
    warnings.warn("popo popo")  # the code that will trigger the warning
# warnings are back to normal filtering from here

如果这样的解决方案适合您,我可以提供PR。

是的,PR很不错。 如有必要,您可以通过还原原始PR开始:)

在为PR编写补丁时,我发现警告实际上是由对is_overridden('FILE_CHARSET')错误检测造成的。 似乎在我的项目中,虽然我没有在设置中设置FILE_CHARSET ,但is_overridden('FILE_CHARSET')返回True。

但是如果我在只安装了django-compressor的最小django项目上进行测试->没有警告

因此,我的PR实际上是不必要的: is_overridden('FILE_CHARSET')不应返回True,因此compress()CompilerFilter()不应发出警告。 在正常情况下。

即使是我添加到django-compressor代码库中的测试来检测此警告pb的回归程度,也没有那么多的投入:django / django @ 3d716467 commit(包含在即将推出的django 3.1中)刚刚删除了该警告,遵循django弃用时间表

美好的一面:我针对新的django代码(其中FILE_CHARSET和相关警告不再存在的代码)测试了django-compressor,它的工作没有任何可检测到的问题。

抱歉给你带来不便。 我认为您可以(再次)解决问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

wjdp picture wjdp  ·  11评论

polmuz picture polmuz  ·  20评论

simonwiles picture simonwiles  ·  6评论

dasloss picture dasloss  ·  6评论

bobort picture bobort  ·  20评论