在settings.py中模板文件夹不正确的Django路径

问题描述:

我刚学习Django并且正在关注学习Django 1.11教程。在settings.py中模板文件夹不正确的Django路径

这里是我当前的项目树:

├── manage.py 
├── muypicky 
│ ├── __init__.py 
│ ├── old_settings.py 
│ ├── settings 
│ │ ├── base.py  # Contains the settings (like shown in the tutorial) 
│ │ ├── __init__.py 
│ ├── urls.py 
│ └── wsgi.py 
├── requirements.txt 
├── restaurants 
└── templates   # Templates Folder 
└── index.html 

我想要的路径添加到在设置文件夹中的文件夹tempelates。但显示的错误

django.template.loaders.filesystem.Loader:.../muypicky /模板/ index.html的(源不存在)

当前setting.py文件

TEMPLATES = [{ 
    'DIRS': [os.path.join(BASE_DIR, 'templates')], 
    },] 

看着这个错误,文件路径是错误的,因为它进入/ muypicky/tempelates这是不正确的。那么如何才能到达根文件夹,然后到setting.py(base.py)中给定文件树的tempelates文件夹。

任何进一步的疑问,只是问和许多感谢预期。

+0

唯一的问题是base.py中的模板文件夹的路径(它正在替换settings.py)。当我将确切的地址放在像“home/user/desktop/venv/src/templates”这样的模板文件夹中时,它工作正常。因此,唯一的问题是“os.path.join(BASE_DIR,'templates')”在muypicky文件夹内查找模板文件夹,当它应该返回目录时。 – WebGuy

+1

我的猜测是,由于您使用的是设置文件夹,因此您需要调整'BASE_DIR'以再上一个文件夹。 –

+0

是的,这是正确的,但我不知道如何修改BASE_DIR“BASE_DIR = os.path.dirname(os.path.dirname(__ file__))”。我尝试了不同的想法,但没有工作:( – WebGuy

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') 
MEDIA_URL = '/uploads/' 
TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [MEDIA_ROOT + '/'],#other app templates 
    'APP_DIRS': True,#heremention yourapp/templates 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
      'django.template.context_processors.media' 
     ], 
    }, 
}, 
] 

也可以看看文件djano template

解决方案:

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

TEMPLATES = [{'DIRS': [ 
    os.path.join(BASE_DIR, 'templates') 
],},] 

添加os.path.dirname()已被封装以返回一个文件夹

+1

很酷我看了教程,他确实说你需要调整BASE_DIR,但我同意它不是很清楚,因为你永远不会看到全线 –

+0

Ye,a很多时候,他说他会在稍后解释它,但通常不会,它会变得混乱。 – WebGuy