找不到记录器“dajaxice”的处理程序

时间:2013-12-03 19:41:15

标签: python ajax django

的AoA,     我正在尝试进行ajax调用,当我使用函数args_example时,它成功发布并且我得到响应“Message is”...但是如果我调用函数更改(与args_example相同)我在控制台中收到错误(没有处理程序)可以找到记录器dajaxice)

// ajax.py

 from django.utils import simplejson
    from contacts.models import Notifications
    from dajaxice.decorators import dajaxice_register

@dajaxice_register

def args_example(request):
    return simplejson.dumps({'message':'Message is '})

def change(request):
    return simplejson.dumps({'message':'Message is '})

// Javascript

function in template
 setInterval(function(){

      Dajaxice.contacts.change(callback);

  },2000);

1 个答案:

答案 0 :(得分:1)

我的猜测是这是一个django错误,它通过ajax传递给浏览器控制台。查看django-dajaxice/dajaxice/core/Dajaxice.py,其中Dajaxice在顶部定义了自己的错误记录器log = logging.getLogger('dajaxice')。因此,您需要做的是调整项目settings.py并使用现有的处理程序定义此记录器,例如:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    },
    'require_debug_true': {
        '()': 'django.utils.log.RequireDebugTrue'
    },
},
'handlers': {
    'mail_admins': {
        'level': 'ERROR',
        'filters': ['require_debug_false'],
        'class': 'django.utils.log.AdminEmailHandler'
    },
    'debug_console': {
        'level': 'DEBUG',
        'filters': ['require_debug_true'],
        'class': 'logging.StreamHandler'
    },
},
'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
    },
    'dajaxice': {
    'handlers': ['debug_console'],
    'level': 'WARNING',
    'propagate': False,
    },
}
}

请注意,由于django.utils.log.RequireDebugTrue

,此示例需要Django> = 1.5

这当然不会解决你的问题,但至少你会得到真正的错误信息。 有关Django日志记录的详细信息,请阅读official docs

真正的django错误来自于@dajaxice_register是一个方法装饰器,必须放在你想要在dajax中使用的每个方法的前面。将您的ajax.py更改为:

from django.utils import simplejson
from contacts.models import Notifications
from dajaxice.decorators import dajaxice_register

@dajaxice_register 
def args_example(request):
    return simplejson.dumps({'message':'Message is '})

@dajaxice_register 
def change(request):
    return simplejson.dumps({'message':'Message is '})