【发布时间】:2015-12-16 21:49:48
【问题描述】:
晚上好,
我已经从 Stack Overflow 和几个教程中阅读了多个答案,但它仍然不起作用。
该项目名为“crepes_bretonnes”。
项目的绝对路径是:
/Users/Jack/Desktop/Projet_Django/crepes_bretonnes
此路径指向项目的根目录,其中包含:
- 博客
- crepes_bretonnes
- db.sqlite3
- manage.py
- 静态
- 模板
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 项目根目录下的模板文件夹中搜索模板,路径如下:
/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 尝试按以下顺序加载这些模板:Using loader django.template.loaders.filesystem.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 (文件不存在) /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 (文件不存在) /Users/Jack/Desktop/Projet_Django/crepes_bretonnes/blog/templates/base.html (文件不存在)
实际上在我的项目根目录下的模板文件夹中找不到base.html。关于绝对路径,我必须在某些时候遗漏一些关键的东西。
你能帮忙吗?
编辑:我使用的是 Mac os X。 以下是 settings.py 中请求的所有打印路径:
**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
编辑:答案
修改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',
],
},
},
]
【问题讨论】:
-
您使用的是 Windows 吗?
os.path.join(PROJECT_PATH, 'templates')的结果是什么?
标签: python django templates django-templates