2

我使用的是Django 1.8。我想要連接django-registration user_registration signal如何調試Django 1.8 AppConfig?

要連線a signal,這篇文章很明確:使用AppConfig.ready()。我想我已經正確連線了,但顯然我沒有,因爲它不起作用。所以,看看發生了什麼,我特意在我的registrationapp拼錯配置類的名稱/ __ init__.py:

default_app_config = 'registrationapp.apps.RegistrationAppConfgOOPS' 

我沒有看到任何錯誤訊息,或任何消息。

如何判斷registrationapp/__init__.py是否被加載,以及是否正在創建並加載正確的應用程序配置?

順便說一下,我設置了控制檯日誌記錄,正如here所描述的,但它沒有記錄太多的控制檯,不知道爲什麼。 (它確實記錄的GET請求,但他們看起來是不同的日誌記錄。)

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'class': 'logging.StreamHandler', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console'], 
      'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), 
     }, 
    }, 
} 

回答

1

我如何知道是否甚至被加載registrationapp/__init__.py

一個非常簡單的方法是將一個頂級print()放入其中。如果它被加載,你會看到輸出。

...如果正確的應用程序配置正在創建和加載?

同樣的事情,把print()放在你的應用配置文件中。

我剛剛嘗試在我的項目中使用虛假名稱default_app_config,並且Django提出了AttributeError,所以我認爲您的應用程序確實沒有找到。

關於日誌記錄,在documentation這樣說:

默認情況下,這個配置只發送或水平INFO的消息更高的控制檯。 Django不會記錄很多這樣的消息。設置環境變量DJANGO_LOG_LEVEL = DEBUG可以查看Django所有非常詳細的調試日誌記錄,因爲它包含所有數據庫查詢。

因此請嘗試使用os.getenv('DJANGO_LOG_LEVEL', 'DEBUG')代替。

+0

這工作,謝謝。我使用的是registrationapp來自定義django-registration-redux包(「註冊」應用程序),但我沒有在INSTALLED_APPS中包含registrationapp。所以,我把它包括在內,一切都很好。 – dfrankow