2017-01-30 94 views
0

我注意到在django項目中註冊應用程序的不同方法。 例如,如果我有一個名爲Catalog的應用程序,可以在settings.py中使用應用程序'catalog'的名稱或更長的名稱'catalog.apps.CatalogConfig'。 有什麼區別,哪一個更準確的方式來註冊一個應用程序?正確的方法在Django註冊應用程序

回答

1

你(應用程序用戶)應該只關心應用程序的名稱:

INSTALLED_APPS = (
    ... 
    'rock_n_roll', 
    ... 
) 

這是因爲應用程序作者子類AppConfig配置和他們的應用程序提供正確的名稱:

# rock_n_roll/apps.py 

from django.apps import AppConfig 

class RockNRollConfig(AppConfig): 
    name = 'rock_n_roll' 
    verbose_name = "Rock ’n’ roll" 

documentation

這將導致RockNRollConfig被使用時INSTALLED_APPS只包含rock_n_roll。這使您可以使用AppConfig功能,而無需用戶更新其INSTALLED_APPS設置。除了這個用例之外,最好避免使用default_app_config,而是在INSTALLED_APPS中指定應用配置類,如下所述。

爲什麼要使用AppConfig

重要的是要明白,Django應用程序只是一組與代碼框架的各個部分交互的代碼。沒有像Application對象那樣的東西。然而,Django需要與已安裝的應用程序進行交互,這主要是爲了配置和內省。這就是爲什麼應用程序註冊表爲每個已安裝的應用程序在AppConfig實例中維護元數據的原因。

相關問題