2015-09-19 32 views
0

晚上好,无法获得TEMPLATE_DIR正确的工作路径

我已经阅读了多个教程的堆栈溢出的多个答案,但仍然无法正常工作。

该项目被称为“crepes_bretonnes”。 该项目的绝对路径是: /Users/Jack/Desktop/Projet_Django/crepes_bretonnes

此路径导致项目的根包含:

  • 博客
  • crepes_bretonnes
  • db.sqlite3
  • manage.py
  • static
  • 模板

settings.py是在第二个文件夹:crepes_bretonnes,包含:

import os 

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

SETTINGS_DIR = os.path.dirname(__file__) 
PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir) 
PROJECT_PATH = os.path.abspath(PROJECT_PATH) 

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(PROJECT_PATH, 'templates'), 
) 

如果我做的事情正确:Setting_Dir是Settings.py的路径,并返回到根路径(上一级)我使用功能pardir

所以,现在,Django会在crepes_bretonnes项目在以下路径根目录中搜索Templates文件夹模板: /Users/Jack/Desktop/Projet_Django/crepes_bretonnes

blog应用的views.py函数返回一个'渲染”包含模板:

return render(request, 'blog/addition.html', locals())

此模板位于在博客文件夹中的模板文件夹。在addition.html

第一行是:

{% extends "base.html" %} 

这base.html文件包含在所谓的模板的根文件夹。我不明白为什么它让我给以下错误:

Django tried loading these templates, in this order: Using loader django.template.loaders.filesystem.Loader: Using loader django.template.loaders.app_directories.Loader: /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Django-1.8.3-py3.4.egg/django/contrib/admin/templates/base.html (File does not exist) /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/Django-1.8.3-py3.4.egg/django/contrib/auth/templates/base.html (File does not exist) /Users/Jack/Desktop/Projet_Django/crepes_bretonnes/blog/templates/base.html (File does not exist)

其实它无法找到我的项目的根目录下的templates文件夹中的base.html。有一些关于绝对路径的关键是我必须在某个时候失踪。

你能帮忙吗?

编辑:我正在使用Mac OS X. 以下是设置中所请求的所有打印路径。潘岳:

**Base_Dir** /Users/Jack/Desktop/Projet_Django/crepes_bretonnes 

**Settings_Dir** /Users/Jack/Desktop/Projet_Django/crepes_bretonnes/crepes_bretonnes 

**Project_Path** /Users/Jack/Desktop/Projet_Django/crepes_bretonnes 

**Templates_Dir** /Users/Jack/Desktop/Projet_Django/crepes_bretonnes/templates 

编辑:ANSWER

修改settings.py,以使它看起来像这样:

import os 

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

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], 
     'APP_DIRS': True, 
     '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', 
      ], 
     }, 
    }, 
] 
+0

您使用的是Windows吗? os.path.join(PROJECT_PATH,'templates')'的结果是什么? –

回答