settings.py 中模板文件夹的 Django 路径不正确
Incorrect Django path to templates folder in settings.py
我刚开始学习 Django,正在学习 学习 Django 1.11 教程。
这是我当前的项目树:
├── 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
我正在尝试将路径添加到设置文件夹中的模板文件夹。但是显示的错误
django.template.loaders.filesystem.Loader: .../muypicky/templates/index.html (Source does not exist)
当前setting.py个文件
TEMPLATES = [{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
},]
看报错,文件路径是错误的,因为进入了/muypicky/tempelates不正确。那么我如何进入根文件夹,然后进入具有给定文件树的模板文件夹 setting.py (base.py).
如有任何进一步的疑问,请随时询问,非常感谢。
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()
被包裹返回一个文件夹
我遇到了类似的问题,并且能够解决这个问题:
TEMPLATES = [{
....
'DIRS': [os.path.join(BASE_DIR, '/templates')],
....
开发环境: django 2.2,python 3.6
所以我认为您需要在 'templates' 字符串之前添加 /
...
我也认为这会随着 django 版本的变化而变化,因为我目前正在开发另一个不需要 django 2.1 上的 'templates' 字符串之前的尾随 /
的项目, python 3.6。所以我认为这值得一试,祝你好运
我刚开始学习 Django,正在学习 学习 Django 1.11 教程。
这是我当前的项目树:
├── 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
我正在尝试将路径添加到设置文件夹中的模板文件夹。但是显示的错误
django.template.loaders.filesystem.Loader: .../muypicky/templates/index.html (Source does not exist)
当前setting.py个文件
TEMPLATES = [{
'DIRS': [os.path.join(BASE_DIR, 'templates')],
},]
看报错,文件路径是错误的,因为进入了/muypicky/tempelates不正确。那么我如何进入根文件夹,然后进入具有给定文件树的模板文件夹 setting.py (base.py).
如有任何进一步的疑问,请随时询问,非常感谢。
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()
被包裹返回一个文件夹
我遇到了类似的问题,并且能够解决这个问题:
TEMPLATES = [{
....
'DIRS': [os.path.join(BASE_DIR, '/templates')],
....
开发环境: django 2.2,python 3.6
所以我认为您需要在 'templates' 字符串之前添加 /
...
我也认为这会随着 django 版本的变化而变化,因为我目前正在开发另一个不需要 django 2.1 上的 'templates' 字符串之前的尾随 /
的项目, python 3.6。所以我认为这值得一试,祝你好运