2010-05-16 51 views
3

我有一些代碼可以在每個(幾乎)每個管理請求上運行,但無法訪問'request'對象。獲取Django本身的路徑

我需要找到Django安裝路徑。我可以這樣做:

import django 
django_path = django.__file__ 

但這似乎是相當浪費在請求的中間。

是否將輸入置於模塊浪費存儲器的開始位置?我很確定我在這裏錯過了一個明顯的竅門。

+2

顯而易見的問題是爲什麼你需要django安裝路徑......它有做錯事的氣味。 – 2010-05-16 19:33:07

回答

5

只要Django已經在Python進程中編輯了import(它有,如果你的代碼是在視圖函數中),再次導入它不會做任何事情* - 所以去堅果,使用import django; django.__file__

現在,如果Django的沒有被當前的Python程序(例如,你打電話os.system("myscript.py")myscript.py需要確定Django的路徑)進口,那麼import django是有點浪費。但是,每個請求產生一個新的進程相當浪費......所以如果效率很重要,無論如何它可能會更好import myscript

*:實際上它會在字典中設置一個值......但那是「沒有」。

+0

這是一個模板標籤。我原本以爲'django'會顯示,但我得到了一個N​​ameError。也許別的東西造成了這種情況? – 2010-05-16 19:48:28

+0

您確實需要顯式導入'django'才能看到名稱。但是,Python會緩存導入,因此不會重新導入。你可以通過查看'sys.modules'來看看它是如何工作的。基本上,當你說'import foo'時,如果存在'sys.modules ['foo']',那麼將會使用它。 – 2010-05-16 23:22:26

+0

這是我不清楚的進口緩存。我假設它只在你以完全相同的方式導入時纔有效。即我將遭受進口懲罰,例如'import django as'或'from django import ...' – 2010-05-17 09:06:07