Bru*_*tus 34 python django django-admin
每次我使用django-admin命令 - 即使在TAB完成时 - 它会抛出一个RemovedInDjango19Warning(如果我使用test命令,则会抛出更多).我怎样才能压制这些警告?
我正在使用Django 1.8和Python 3.4(在虚拟环境中).据我所知,所有这些警告来自库而不是我的代码.
这里有些例子:
…/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
return f(*args, **kwds)
…/lib/python3.4/site-packages/django/contrib/admin/util.py:7: RemovedInDjango19Warning: The django.contrib.admin.util module has been renamed. Use django.contrib.admin.utils instead.
"Use django.contrib.admin.utils instead.", RemovedInDjango19Warning)
…/lib/python3.4/site-packages/django/templatetags/future.py:25: RemovedInDjango19Warning: Loading the ``url`` tag from the ``future`` library is deprecated and will be removed in Django 1.9. Use the default ``url`` tag instead.
RemovedInDjango19Warning)
由于Django版本1.11(发行说明),默认情况下不再使用贬值警告.所以我想这不再是一个问题,因为1.11是支持Python 2的最后一个版本,并且还具有长期支持.
Fre*_*fer 30
向settings.py添加日志记录过滤器可以抑制这些控制台警告(至少对于Django 1.7,Python 3.4中的manage.py命令).
过滤器可以选择性地抑制警告.以下代码为控制台创建一个新的"suppress_deprecated"过滤器,并将其附加到默认日志记录过滤器.将此块添加到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])
Run Code Online (Sandbox Code Playgroud)
如果根网站模块(或过滤器位置和/或名称)不同,则"mysite.settings.SuppressDeprecated"字符串需要更改.
kar*_*ikr 14
在django 1.7中,引入SILENCED_SYSTEM_CHECKS了一个新的设置来抑制警告
您希望永久确认和忽略的系统检查框架(即["models.W001"])生成的消息标识符列表.沉默的警告将不再输出到控制台; 仍会打印出静音错误,但不会阻止管理命令运行.
如果你想抑制TEMPLATES_警告,
Django 1.8中不推荐使用独立的TEMPLATE_*设置
你的设置将是:
SILENCED_SYSTEM_CHECKS = ["1_8.W001"]
Run Code Online (Sandbox Code Playgroud)
s29*_*s29 11
在manage.py中,将其添加到顶行 -
#!/usr/bin/env PYTHONWARNINGS=ignore python
Run Code Online (Sandbox Code Playgroud)
这将取消所有警告,如果你使用了很多第三方库,我认为在某些情况下这是不可取的.
免责声明:建议仅在您已经看过至少1,000次警告之后,并且应该在升级Django时删除.
注意:这可能会对某些平台产生一些不良影响,例如吞咽更多输出而不仅仅是警告.
小智 10
django 1.9中没有上述任何内容对我有用.我通过在settings.py中添加以下行来修复此问题:
import logging
def filter_deprecation_warnings(record):
warnings_to_suppress = [
'RemovedInDjango110Warning'
]
# Return false to suppress message.
return not any([warn in record.getMessage()
for warn in warnings_to_suppress])
warn_logger = logging.getLogger('py.warnings')
warn_logger.addFilter(filter_deprecation_warnings)
Run Code Online (Sandbox Code Playgroud)
在查看我的Django 1.8项目的其他依赖项中的弃用警告时,使用
python -Wd manage.py runserver
Run Code Online (Sandbox Code Playgroud)
,我能够通过临时添加来过滤掉Django弃用警告
import warnings
from django.utils.deprecation import RemovedInDjango110Warning
warnings.filterwarnings(action="ignore", category=RemovedInDjango110Warning)
Run Code Online (Sandbox Code Playgroud)
对我来说settings.py(可能是在启动时加载的任何模块中).我无法弄清楚如何将过滤器作为额外-W选项,即
python -Wd -Wi::RemovedInDjango110Warning manage.py runserver
Run Code Online (Sandbox Code Playgroud)
结果Invalid -W option ignored: unknown warning category: 'RemovedInDjango110Warning'.
对于仅命令行界面的快速解决方案,请python -W ignore在执行时在 manage.py 前添加前缀,如下所示:
python -W ignore manage.py runserver
-或者-
python -W ignore manage.py shell_plus
-或者-
python -W ignore manage.py makemigrations
这现在对我有用,可以在运行 Django 1.9 时抑制所有 Django 1.10 弃用警告。
| 归档时间: |
|
| 查看次数: |
17527 次 |
| 最近记录: |