的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);
答案 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日志记录的详细信息,请阅读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 '})