[英]BASE_DIR output within a subfolder, DJANGO
自從我將settings.py
文件更改為子文件夾'settings'中的3個不同文件(即base,local和production)后, BASE_DIR
將不會顯示正確投影的路徑。
我希望BASE_DIR輸出的內容如下:
`PathToProject/Projectname`
我得到了什么(因為我在'settings'子文件夾中的base.py中移動了BASE_DIR:
PathToProject/Projectname/Projectname
它困擾我,因為現在它在Projectname/Projectname
而不是Projectname
尋找static
文件夾
我怎樣才能正確配置BASE_DIR函數以給我正確的項目路徑?
我建議你保留你的默認主要settings.py
,如果你需要的話,可以自定一些。
如果您需要派生它,請為您的預生產版本制作其他settings.py
文件。 讓你的preprod-settings.py
這樣,在同一個目錄下settings.py
:
from .settings import *
DEBUG = False # <-- just add some settings or override the previous ones like this.
這樣,所有主要設置都在主文件中,您只需要在自定義設置文件中放置要更改的內容。 然后,您可以使用manage.py
的--settings
選項更改要使用的設置文件,或者在生產中修改(或生成自定義的) wsgi.py
文件,例如:
import os, sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.mycustomsettingsfile")
SETTINGS_DIR = os.path.dirname(__file__)
PROJECT_PATH = os.path.abspath(os.path.join(SETTINGS_DIR, os.pardir))
sys.path.append(PROJECT_PATH)
application = get_wsgi_application()
在創建項目時, BASE_DIR
的默認值為:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
意思是 :
“BASE_DIR是此行所在文件的父文件夾的父文件夾(settings.py)。”
os.path.dirname()
給父文件夾的路徑, os.path.abspath()
的絕對路徑(你需要它給os.path.dirname()
足夠的信息來獲取父dirnames中)。
由於每次運行服務器時都會計算BASE_DIR
的值,並且由於此valus僅取決於settings.py
位置,因此您不需要多個位置或案例的自定義值:
您移動項目 - > BASE_DIR
自動更改。
如果移動settings.py文件,則可能必須更改BASE_DIR
值:例如,如果將其移動得更深,只需將os.path.dirname
添加到BASE_DIR
賦值中。
注意:如果你想選擇在幾個子項目中運行的項目(雖然我覺得很奇怪,但我不確定我是否理解。它可能是錯的,隨意描述你想要實現的目標和原因,也許我們可以建議更好的方法),您仍然可以覆蓋自定義settings.py
文件中的BASE_DIR
值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.