2012-03-25 85 views
8

我的網站幾乎沒有全局配置。例如,「SMTP服務器地址」,「公司地址」等django-admin中的網站配置

當然,我可以在:

  1. settings.py創建一個變量,在模板和應用程序使用它;
  2. 創建一個模型(如Configuration)並在其中寫入所有必需的字段。

如果我使用第一種方式,我不能授予更改django-admin中的這些字段的訪問權限。

如果我使用秒的方式它不是一個美麗的解決方案,因爲無處不在的代碼我將使用model_name.objects.get(id=1),我只需要一個實例。模型是爲其他任務而創建的。

我該如何解決這個問題?

+1

未來,請檢查您的文章的實時預覽,以確保格式大致正確。 – 2012-03-25 07:57:32

+0

使用[django-solo](http://stackoverflow.com/a/20813571/1888983)([github](https:// github。com/lazybird/django-solo))創建一個單例對我來說是很痛苦的。 – jozxyqk 2015-05-09 10:00:22

回答

6

這就是我所做的。可能不是最優化的解決方案,但爲我工作。

  1. 創建配置模型,並盡一切平常的東西在你的2點(在configuration.view說)創建一個函數,它會拉出來,在一個字典返回的配置值。

  2. 現在,在您settings.py,導入功能,並設置返回的字典到settings.py變量: CONFIG = configuration.view.get_config()

  3. 創建一個模板,背景處理器將設置在模板背景下,這個CONFIG字典。

    def init_site_settings(request): 
        return settings.CONFIG 
    
  4. 這種情況下處理器添加到您的TEMPLATE_CONTEXT_PROCESSORS

  5. 現在,您可以自由使用您的配置參數模板作爲{{my_config_key}}

希望這有助於。