gpt4 book ai didi

python - 如何抑制 Django 中的弃用警告?

转载 作者:IT老高 更新时间:2023-10-28 21:52:39 25 4
gpt4 key购买 nike

每次我使用 django-admin 命令时——甚至在 TAB 完成时——它都会抛出一个 RemovedInDjango19Warning(如果我使用 test 命令)。如何抑制这些警告?

我正在使用 Django 1.8 和 Python 3.4(在虚拟环境中)。据我所知,所有这些警告都来自库而不是我的代码。

示例

这里有一些例子:

  • …/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic 已弃用,将在 Django 1.9 中删除。它的内容已移至 django.contrib.contenttypes 的字段、表单和管理子模块。
    返回 f(*args, **kwds)

  • …/lib/python3.4/site-packages/django/contrib/admin/util.py:7: RemovedInDjango19Warning: django.contrib.admin.util 模块已重命名。请改用 django.contrib.admin.utils。
    "改用 django.contrib.admin.utils。", RemovedInDjango19Warning)

  • …/lib/python3.4/site-packages/django/templatetags/future.py:25: RemovedInDjango19Warning: 从``future`` 库加载``url`` 标签是已弃用并将在 Django 1.9 中删除。请改用默认的 ``url`` 标签。
    RemovedInDjango19Warning)

更新

由于 Django 1.11 版 (release notes),默认情况下弃用警告不再响亮。所以我想这不再是问题了,因为 1.11 是支持 Python 2 的最后一个版本,并且还提供长期支持。

最佳答案

向 settings.py 添加日志过滤器可以抑制这些控制台警告(至少对于 Django 1.7、Python 3.4 中的 manage.py 命令)。

过滤器可以选择性地抑制警告。以下代码为控制台创建了一个新的“suppress_deprecated”过滤器,并将其附加到默认的日志过滤器。将此 block 添加到 settings.py 以配置 LOGGING 变量:

import logging, copy
from django.utils.log import DEFAULT_LOGGING

LOGGING = copy.deepcopy(DEFAULT_LOGGING)
LOGGING['filters']['suppress_deprecated'] = {
'()': 'mysite.settings.SuppressDeprecated'
}
LOGGING['handlers']['console']['filters'].append('suppress_deprecated')

class SuppressDeprecated(logging.Filter):
def filter(self, record):
WARNINGS_TO_SUPPRESS = [
'RemovedInDjango18Warning',
'RemovedInDjango19Warning'
]
# Return false to suppress message.
return not any([warn in record.getMessage() for warn in WARNINGS_TO_SUPPRESS])

如果根网站模块(或过滤器位置和/或名称)不同,则需要更改“mysite.settings.SuppressDeprecated”字符串。

关于python - 如何抑制 Django 中的弃用警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29562070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com