Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t关闭django cms产生的警告_Python_Django_Django Cms - Fatal编程技术网

Python Can';t关闭django cms产生的警告

Python Can';t关闭django cms产生的警告,python,django,django-cms,Python,Django,Django Cms,我用djangocms安装程序脚本安装了djangocms,除了每次启动服务器、使用manage.py执行任何操作,甚至执行manage.py选项卡自动完成(最烦人)时,shell中都会出现一堆RemovedInDjango18Warning警告之外,其他一切都正常!所以我想使用warnings模块使警告静音: # in manage.py, just after `import os; import sys`: import warnings warnings.filterwarnings("

我用
djangocms安装程序
脚本安装了djangocms,除了每次启动服务器、使用manage.py执行任何操作,甚至执行manage.py选项卡自动完成(最烦人)时,shell中都会出现一堆
RemovedInDjango18Warning
警告之外,其他一切都正常!所以我想使用
warnings
模块使警告静音:

# in manage.py, just after `import os; import sys`:
import warnings
warnings.filterwarnings("ignore")
我想更具体地说,沉默,但事实证明,即使是这个简单的情况下没有做任何事情,警告仍然显示!我做错了什么

警告:

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/publisher/manager.py:5: RemovedInDjango18Warning: `PublisherManager.get_query_set` method should be renamed `get_queryset`.
  class PublisherManager(models.Manager):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/models/managers.py:15: RemovedInDjango18Warning: `PageManager.get_query_set` method should be renamed `get_queryset`.
  class PageManager(PublisherManager):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/admin/change_list.py:39: RemovedInDjango18Warning: `CMSChangeList.get_query_set` method should be renamed `get_queryset`.
  class CMSChangeList(ChangeList):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/admin/forms.py:340: RemovedInDjango18Warning: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is deprecated - form PagePermissionInlineAdminForm needs updating
  class PagePermissionInlineAdminForm(forms.ModelForm):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/admin/forms.py:442: RemovedInDjango18Warning: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is deprecated - form ViewRestrictionInlineAdminForm needs updating
  class ViewRestrictionInlineAdminForm(PagePermissionInlineAdminForm):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/cms/admin/forms.py:491: RemovedInDjango18Warning: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is deprecated - form PageUserForm needs updating
  class PageUserForm(UserCreationForm, GenericCmsPermissionForm):

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/django/forms/widgets.py:143: RemovedInDjango18Warning: `PagePermissionInlineAdmin.queryset` method should be renamed `get_queryset`.
  .__new__(mcs, name, bases, attrs))

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/django/forms/widgets.py:143: RemovedInDjango18Warning: `ViewRestrictionInlineAdmin.queryset` method should be renamed `get_queryset`.
  .__new__(mcs, name, bases, attrs))

/Users/fran/.virtualenvs/dkde2015/lib/python2.7/site-packages/django/forms/widgets.py:143: RemovedInDjango18Warning: `PageUserAdmin.queryset` method should be renamed `get_queryset`.
  .__new__(mcs, name, bases, attrs))
您可以使用该标志筛选警告

python -W ignore manage.py runserver

这实际上与Django CMS无关,尽管您可能会看到Django CMS使用的模块发出的警告

原因是Django>=1.5.x会根据此命令将所有警告路由到日志记录系统。因此,要禁用Django中的警告,您必须为
py.warnings
添加一个记录器(如Python中所述):


解决这一问题的外科手术方法是创建一个日志过滤器,该过滤器将只过滤掉明确指定为静音的警告。你知道:

错误永远不应该悄无声息地过去。
除非明确沉默


考虑到这一点,这里是我的过滤设备,全部位于
settings.py
(目前为止):

我想它可以进一步完善。。。有什么想法吗


为什么要麻烦

首先,我可以使用now(再次)use,每次按下[tab]键时都不会出现一堆警告


另外,现在我没有来自DjangoCMS的20多个警告,我可以从我自己的代码中看到哪些警告并加以修复。

谢谢你的建议。这可以在本地使用runserver,但不幸的是,它并不是远程部署的真正选项。此外,我似乎无法指定我希望静音的确切警告,相反,它会使所有警告都静音(即使医生说不是这样)。我猜我在这里也做错了什么:(是的,我知道答案不是一个完整的解决方案,但希望它可能会有所帮助。我曾短暂地尝试在命令行中指定要筛选的确切警告,但也无法使其正常工作。这不完全是我想要的,而是+1,用于将我设置在正确的轨道上。我不希望丢失代码生成的任何其他警告,例如。
removedindjango18警告:不推荐创建没有“fields”属性或“exclude”属性的模型表单-表单MyModelForm需要更新
# settings.py
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
         'null': {
           'level': 'DEBUG',
           'class': 'logging.NullHandler',
         }
     },
    'loggers': {
         'py.warnings': {
             'propagate': False,
             'handlers': ['null']
          }
     },
}
MY_IGNORED_WARNINGS = {
    'RemovedInDjango18Warning: `PublisherManager.get_query_set`',
    'RemovedInDjango18Warning: `PageManager.get_query_set`',
    'RemovedInDjango18Warning: `CMSChangeList.get_query_set`',
    'form PagePermissionInlineAdminForm needs updating',
    'form ViewRestrictionInlineAdminForm needs updating',
    'form PageUserForm needs updating',
    '/cms/admin/placeholderadmin.py:133: RemovedInDjango18Warning: Options.module_name has been deprecated',
    '/cms/admin/settingsadmin.py:28: RemovedInDjango18Warning: Options.module_name has been deprecated',
    '/cms/admin/pageadmin.py:111: RemovedInDjango18Warning: Options.module_name has been deprecated',
    'RemovedInDjango18Warning: `PagePermissionInlineAdmin.queryset',
    'RemovedInDjango18Warning: `ViewRestrictionInlineAdmin.queryset`',
    'RemovedInDjango18Warning: `PageUserAdmin.queryset`',

}

def filter_djangocms_warnings(record):
    for ignored in MY_IGNORED_WARNINGS:
        if ignored in record.args[0]:
            return False
    return True

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'filters': {
        'ignore_djangocms_warnings': {
            '()': 'django.utils.log.CallbackFilter',
            'callback': filter_djangocms_warnings,
        },
    },
    'loggers': {
        'py.warnings': {
            'handlers': ['console', ],
            'filters': ['ignore_djangocms_warnings', ],
        }
    },
}