2012-07-24 86 views
8

我在settings.py文件中設置了gi。我創建了一個單獨的Python文件(即我沒有在視圖中使用它),並用import語句爲:無法從django中的設置文件中獲取設置

from django.conf import settings 

,但是當我試圖訪問settings.gi,它說,'Settings' object has no attribute 'gi'。少了什麼東西? :■

+0

我不知道這是否重要,但錯誤說** **,而您正在嘗試訪問** s ettings。難道你不小心使用了資本嗎? – BrtH 2012-07-24 13:11:51

+1

@BrtH不,您可以查看django.conf的源代碼,您會看到'settings'是項目'settings'模塊的一個包裝。 – xiaowl 2012-07-24 13:42:31

回答

16

從Django文檔上creating your own settings狀態:

設置名稱全部大寫。

嘗試將設置重命名爲GI

+0

但這只是一個約定?我正在使用一些現有的代碼,所以我不會重命名設置,因爲它也將用於其他應用程序 – wasimbhalli 2012-07-24 13:02:53

+0

我使用此代碼查看屬性,值的變量(theObject).iteritems(): 打印屬性,「:」,value'它只顯示一個屬性被包裝 – wasimbhalli 2012-07-24 13:03:41

+2

如果你看[源代碼](https://github.com/django/django/blob/1.4/django/conf/__init__.py# L82)作爲設置對象,您可以看到非大寫變量將被忽略。文檔中的'convention'這個詞可能不夠強大。如果你不想重命名這個變量,那麼這取決於你,但是Django不會將它視爲一個「設置」,你需要找到一種不同的方式來導入它。 – Alasdair 2012-07-24 13:11:08

0

該項目必須添加在PYTHONPATH上並且必須定義DJANGO_SETTINGS_MODULE。 請參考下面提到的命令。

export PYTHONPATH=PATH_OF_PROJECT 
export DJANGO_SETTINGS_MODULE=settings 
+0

我所有的其他設置都正常工作。例如,數據庫連接正在工作,syncdb工作。唯一的問題是一個文件使用設置文件中的設置。 – wasimbhalli 2012-07-24 13:08:21

+0

您可以發佈您無法訪問項目設置文件的文件的其他導入語句。可能是他們是導入或模塊名稱中的碰撞?試試Alasdir提到的上限。 – 2012-07-24 13:18:33