2016-03-05 83 views
0

Django中的每個應用程序有什麼不同的設置?例如,我有2個應用程序:如何在Django中爲每個應用程序設置不同的設置?

  • internal_api
  • external_api

他們需要一個JWT令牌的到期三角洲不同的設置。我使用的是django-rest-framework附加稱爲djangorestframework-jwt

internal_api需要的設置:

JWT_AUTH = { 
    'JWT_EXPIRATION_DELTA': datetime.timedelta(hours=12), 
} 

external_api需要的設置:

JWT_AUTH = { 
    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300), 
} 
+0

爲什麼不在相同的設置文件中創建兩個不同的設置,一個叫做JWT_AUTH_EXT,另一個叫JWT_AUTH_INT(或者是那些線上的東西)? – ubadub

+0

,因爲當'djangorestframework-jwt'初始化設置時,它只會尋找添加名爲'JWT_AUTH'的設置,其他任何東西都不會被導入到設置中。 https://github.com/GetBlimp/django-rest-framework-jwt/blob/master/rest_framework_jwt/settings.py#L7第53行顯示了這些設置存儲爲「api_settings」的位置。那些'api_settings'然後是庫的其餘部分提到的設置... –

回答

1

可以import一個在Django的設置模塊專用在您需要的特定應用程序的運行時方式。你這樣做的:

from django.conf import settings 
from internal_api import internal_api_settings 
settings.configure(default_settings=internal_api_settings) 

internal_api_settings將在internal_api模塊指定JWT_AUTH值。我相信你可以在你的settings.configure()通話更加具體和實際規定:

settings.configure(JWT_AUTH=internal_api_settings.settings_dictionary) 

哪裏settings_dictionary是你想要傳遞到設置的值。

+0

我試過上面的,但是得到了'RuntimeError:Settings already configured.'另外,Django文檔說不要這樣做... https:// docs.djangoproject.com/en/1.9/topics/settings/#altering-settings-at-runtime –

+0

另請參閱:https://docs.djangoproject.com/en/1.9/topics/settings/#either-configure-or -django-settings-module-is-required –

+0

我相信如果你在你的應用程序目錄中使用settings.py,那也沒問題。他們大多隻是不希望你這樣做你的意見。 – skeletalbassman

相關問題