簡體   English   中英

找不到記錄器“ dajaxice”的處理程序

[英]No handler could be found for logger “dajaxice”

AoA,我正在嘗試進行Ajax調用,當我使用args_example函數時,它成功發布,並且得到響應“消息為......”,但是如果我調用函數change(與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);

我的猜測是這是django錯誤,它是通過ajax傳遞給瀏覽器控制台的。 看一下django-dajaxice/dajaxice/core/Dajaxice.py ,其中django-dajaxice/dajaxice/core/Dajaxice.py在頂部定義了自己的錯誤記錄器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日志的詳細信息,請閱讀官方文檔

真正的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 '})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM