如何正确设置 Django 模板路径?
How to set Django template path properly?
在最近的 django 文档中“从项目的模板目录覆盖”
https://docs.djangoproject.com/en/3.1/howto/overriding-templates/
它表明您可以为模板使用以下路径:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
...
},
]
我尝试使用 [BASE_DIR / 'templates']
但我不断收到以下错误:
TypeError: unsupported operand type(s) for /: 'str' and 'str'
当我将代码更改为:[BASE_DIR , 'templates']
或 [os.path.join(BASE_DIR , 'templates')]
时一切正常,在这种情况下没有问题。
有人可以解释我在 [BASE_DIR / 'templates']
行中遗漏了什么吗?
谢谢。
我正在使用 Python 3.8 和 Django 3.1。
为了使用 BASE_DIR / 'templates'
,您需要 BASE_DIR
成为 Path()
。
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
我怀疑你的 settings.py 是用较早版本的 Django 创建的,因此 BASE_DIR
是一个字符串,例如
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
谢谢
from pathlib import Path
import os
BASE_DIR = Path(__file__).resolve().parent.parent
在最近的 django 文档中“从项目的模板目录覆盖” https://docs.djangoproject.com/en/3.1/howto/overriding-templates/ 它表明您可以为模板使用以下路径:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
...
},
]
我尝试使用 [BASE_DIR / 'templates']
但我不断收到以下错误:
TypeError: unsupported operand type(s) for /: 'str' and 'str'
当我将代码更改为:[BASE_DIR , 'templates']
或 [os.path.join(BASE_DIR , 'templates')]
时一切正常,在这种情况下没有问题。
有人可以解释我在 [BASE_DIR / 'templates']
行中遗漏了什么吗?
谢谢。
我正在使用 Python 3.8 和 Django 3.1。
为了使用 BASE_DIR / 'templates'
,您需要 BASE_DIR
成为 Path()
。
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
我怀疑你的 settings.py 是用较早版本的 Django 创建的,因此 BASE_DIR
是一个字符串,例如
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
谢谢
from pathlib import Path
import os
BASE_DIR = Path(__file__).resolve().parent.parent