2017-08-30 185 views
0

我剛學習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

回答

0

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

1

解決方案:

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