繁体   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