[英]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.