Skip to main content
 首页 » 编程设计

python之django 中项目主管的路径

2025年05月04日32bjzhanghao

这是我的项目树:

projectname 
    projectname 
        init.py 
        settings.py 
        urls.py 
        wsgi.py 
    appname 
        init.py 
        admin.py 
        models.py 
        test.py 
        views.py 
        urls.py 
    templates 
        base.html 
        login.html 

现在在 settings.py 中我使用这段代码:

TEMPLATE_DIRS = ( 
    os.path.join(os.path.dirname(BASE_DIR), "projectname", "templates"), 
    ) 
 
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "projectname", "static", "static-only") 
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "projectname", "static", "media") 

如何获取项目目录的路径,这样我就不需要在代码中输入项目名称 projectname 并在任何其他 django 项目中使用该代码?

更新

或者我可以只用这个吗

BASE_DIR+'/templates' 
BASE_DIR+'/static/media' 

或者这是个坏主意?

请您参考如下方法:

我建议您使用 os.path.abspath :

# Project root is intended to be used when building paths, 
# e.g. ``os.path.join(PROJECT_ROOT, 'relative/path')``. 
PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__)) 
 
# Absolute path to the directory where ``collectstatic`` 
# will collect static files for deployment. 
# 
# For more information on ``STATIC_ROOT``, visit 
# https://docs.djangoproject.com/en/1.8/ref/settings/#static-root 
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/') 
 
# Absolute path to the directory that will hold uploaded files. 
# 
# For more information on ``MEDIA_ROOT``, visit 
# https://docs.djangoproject.com/en/1.8/ref/settings/#media-root 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'uploads/')