BASE_DIR返回设置路径而不是项目路径(django 1.10)

时间:2016-10-19 00:50:04

标签: django django-settings django-1.10

我正在设置Django 1.10的设置文件,根据两个Scoops设置的Django 1.8首选设置文件。

我的base.py设置文件是:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

BASE_DIR返回以下路径:

/Devs/projects/captain_log/src/cap_log

我的文件树:

|--Virtual Env Folder
    |--src(django project)/
       |--cap_log(django config)/
          |--init.py
          |--urls.py
          |--wsgi.py
          |--settings/
              |-- init.py
              |-- base.py (all settings located here)
              |-- development.py
              |-- production.py
              |-- etc.

我假设BASE_DIR应该返回:

/Devs/projects/captain_log/src/

我问,因为我的STATIC_DIRS也在返回:

/Devs/projects/captain_log/src/cap_log/static

而不是:

 /Devs/projects/captain_log/src/static

有人可以建议解决方案或纠正我正在做的事情。 它还影响模板路径,收集静态,媒体路径等。

1 个答案:

答案 0 :(得分:6)

再试一次dirname电话

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

第一个dirname为您提供设置,第二个dirname为您提供config文件夹,第三个将您放入父目录

__file__ # is the current file location
os.path.abspath(__file__) # locates you on the file structure
os.path.dirname(os.path.abspath(__file__)) # gives you the directory of the file at the supplied filepath

默认假设您使用的是settings.py文件而不是目录,因此您是原始配置中的一个目录