关于Django django.template.base.VariableDoesNotExist

运行环境

pycharm 2017.1
Django 2.0.1
python 3.6.1

在Django网页项目中添加logger

在settings.py添加logging对应代码:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}  #日志格式
    },
    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
            },
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': 'log/all.log',     #日志输出文件
            'maxBytes': 1024*1024*5,                  #文件大小
            'backupCount': 5,                         #备份份数
            'formatter':'standard',                   #使用哪种formatters日志格式
        },
        'error': {
            'level':'ERROR',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': 'log/error.log',
            'maxBytes':1024*1024*5,
            'backupCount': 5,
            'formatter':'standard',
            },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': 'log/script.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter':'standard',
            },
        'scprits_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename':'log/script.log',
            'maxBytes': 1024*1024*5,
            'backupCount': 5,
            'formatter':'standard',
            }
    },
    'loggers': {
        'django': {
            'handlers': ['default', 'console'],
            'level': 'DEBUG',
            'propagate': False
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False,
            },
        'scripts': {
            'handlers': ['scprits_handler'],
            'level': 'INFO',
            'propagate': False
        },
        'blog.views': {
            'handlers': ['default', 'error'],
            'level': 'DEBUG',
            'propagate': True
        },
    }
}

在views.py中引用代码:

import logging
logger=logging.getLogger('blog.views')#blog为对应app名称

运行网页发生如下错误(部分):

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 835, in _resolve_lookup
    current = current[bit]
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/context.py", line 83, in __getitem__
    raise KeyError(key)
KeyError: 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 841, in _resolve_lookup
    if isinstance(current, BaseContext) and getattr(type(current), bit):
AttributeError: type object 'RequestContext' has no attribute 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 849, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'is_popup'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 856, in _resolve_lookup
    (bit, current))  # missing attribute
django.template.base.VariableDoesNotExist: Failed lookup for key [is_popup] in [{'True': True, 'False': False, 'None': None}, {'csrf_token': <SimpleLazyObject: <function csrf.<locals>._get_val at 0x400fa04>>, 'request': <WSGIRequest: GET '/admin/'>, 'user': <SimpleLazyObject: <User: panos>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x44ade8c>, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x4508aac>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'click_count_list': <QuerySet [{'title': '2'}, {'title': '1'}, {'title': '7'}, {'title': '6'}, {'title': '3'}, {'title': '5'}]>, 'article_comment_list': [<Article: 1>, <Article: 7>, <Article: 6>, <Article: 5>, <Article: 4>, <Article: 3>], 'comment_count_list': <QuerySet [{'article': 6, 'comment_count': 2}, {'article': 7, 'comment_count': 2}, {'article': 1, 'comment_count': 1}, {'article': 2, 'comment_count': 1}, {'article': 3, 'comment_count': 1}, {'article': 4, 'comment_count': 1}]>, 'tag_list': <QuerySet [<Tag: 1>, <Tag: 2>, <Tag: 3>, <Tag: 4>, <Tag: 5>, <Tag: 6>, <Tag: 7>, <Tag: 8>]>, 'links': <QuerySet [<Links: 百度>, <Links: Google>, <Links: Bing>]>, 'category_list': <QuerySet [<Category: A>, <Category: B>, <Category: C>, <Category: D>, <Category: E>, <Category: F>, <Category: G>]>, 'archive_list': ['2018/02文章存档'], 'signature': '梦虽虚幻,却是自己的梦想;位虽低微,却是自己的岗位;屋虽简陋,却是自己的家;志虽渺小,却是自己的追求。', 'intro': 'panos个人博客'}, {}, {'site_title': 'Django site admin', 'site_header': 'Django administration', 'site_url': '/', 'has_permission': True, 'available_apps': [{'name': 'Authentication and Authorization', 'app_label': 'auth', 'app_url': '/admin/auth/', 'has_module_perms': True, 'models': [{'name': 'Groups', 'object_name': 'Group', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/auth/group/', 'add_url': '/admin/auth/group/add/'}]}, {'name': 'Blog_App', 'app_label': 'blog_app', 'app_url': '/admin/blog_app/', 'has_module_perms': True, 'models': [{'name': '分类', 'object_name': 'Category', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/category/', 'add_url': '/admin/blog_app/category/add/'}, {'name': '友情链接', 'object_name': 'Links', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/links/', 'add_url': '/admin/blog_app/links/add/'}, {'name': '广告', 'object_name': 'Ad', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/ad/', 'add_url': '/admin/blog_app/ad/add/'}, {'name': '文章', 'object_name': 'Article', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/article/', 'add_url': '/admin/blog_app/article/add/'}, {'name': '标签', 'object_name': 'Tag', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/tag/', 'add_url': '/admin/blog_app/tag/add/'}, {'name': '用户', 'object_name': 'User', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/user/', 'add_url': '/admin/blog_app/user/add/'}, {'name': '评论', 'object_name': 'Comment', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/comment/', 'add_url': '/admin/blog_app/comment/add/'}]}], 'title': 'Site administration', 'app_list': [{'name': 'Authentication and Authorization', 'app_label': 'auth', 'app_url': '/admin/auth/', 'has_module_perms': True, 'models': [{'name': 'Groups', 'object_name': 'Group', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/auth/group/', 'add_url': '/admin/auth/group/add/'}]}, {'name': 'Blog_App', 'app_label': 'blog_app', 'app_url': '/admin/blog_app/', 'has_module_perms': True, 'models': [{'name': '分类', 'object_name': 'Category', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/category/', 'add_url': '/admin/blog_app/category/add/'}, {'name': '友情链接', 'object_name': 'Links', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/links/', 'add_url': '/admin/blog_app/links/add/'}, {'name': '广告', 'object_name': 'Ad', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/ad/', 'add_url': '/admin/blog_app/ad/add/'}, {'name': '文章', 'object_name': 'Article', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/article/', 'add_url': '/admin/blog_app/article/add/'}, {'name': '标签', 'object_name': 'Tag', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/tag/', 'add_url': '/admin/blog_app/tag/add/'}, {'name': '用户', 'object_name': 'User', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/user/', 'add_url': '/admin/blog_app/user/add/'}, {'name': '评论', 'object_name': 'Comment', 'perms': {'add': True, 'change': True, 'delete': True}, 'admin_url': '/admin/blog_app/comment/', 'add_url': '/admin/blog_app/comment/add/'}]}], 'LANGUAGE_CODE': 'en-us', 'LANGUAGE_BIDI': False}]

查阅之后发现此exception应为Django的一个漏洞:

很遗憾地说现在暂时找不到有效的解决办法

猜你喜欢

转载自blog.csdn.net/weixin_40841752/article/details/79312314