簡體   English   中英

子文件夾中的BASE_DIR輸出,DJANGO

[英]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 ,如果你需要的話,可以自定一些。

如果您需要派生它,請為您的預生產版本制作其他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的默認值為:

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怎么辦?”

如果移動settings.py文件,則可能必須更改BASE_DIR值:例如,如果將其移動得更深,只需將os.path.dirname添加到BASE_DIR賦值中。

注意:如果你想選擇在幾個子項目中運行的項目(雖然我覺得很奇怪,但我不確定我是否理解。它可能是錯的,隨意描述你想要實現的目標和原因,也許我們可以建議更好的方法),您仍然可以覆蓋自定義settings.py文件中的BASE_DIR值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM