2011-08-31 62 views
1

當總之不蟒蛇獲取路徑值:如果運行的Django/WSGI

views.py:在

路徑

def display_path(request): 
    import os 
    return HttpResponse("The path is %s" % os.path.abspath(".")) 

結果是/ var/www

是否可以更改th在價值,還是由httpd/WSGI設置?

+0

我認爲它有一些關於httpd配置!因爲我只是在我的2環境中做了這個測試,並且都返回了「路徑是/」 –

回答

2

您不應該依賴當前工作目錄作爲Web應用程序中的特定位置,因爲它對於不同的託管機制會有所不同。所以,甚至不要試圖改變當前的工作目錄,因爲只有這樣纔會導致悲傷。

相反,您應該組織您的代碼以使用絕對路徑。這需要進行硬編碼,作爲後綴添加到配置的某個前綴中,或者相對於正在執行的代碼文件的位置進行即時計算。在後者,你會這樣做:

import os 
here = os.path.dirname(__file__) 
path = os.path.join(here, 'relative/path/file.txt') 
+0

問題是我使用的是django-mailer(http://code.google.com/p/django-mailer/),它假設某個命令將**總是**從命令行運行。當它不是的時候,它會嘗試在'/ var/www/...'創建一個線程文件,這個文件可能會失敗(並且不會,我沒有給'/ var/www'寫apache寫入權限)。我的修補程序是改變django-mailer的代碼,以便您可以手動設置線程文件的路徑。 –