Python 如何正确设置Django模板路径?

Python 如何正确设置Django模板路径?,python,django,django-templates,python-3.8,django-3.1,Python,Django,Django Templates,Python 3.8,Django 3.1,在最新的django文档“从项目的模板目录重写” 这表明您可以使用以下模板路径: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, ... }, ] 我尝试使用[BASE\u DIR/'templates']

在最新的django文档“从项目的模板目录重写” 这表明您可以使用以下模板路径:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        ...
    },
]
我尝试使用
[BASE\u DIR/'templates']
,但不断出现以下错误:
TypeError:不支持/:'str'和'str'的操作数类型

当我将代码更改为:
[BASE\u DIR,'templates']
[os.path.join(BASE\u DIR,'templates')]
时,一切正常,在这种情况下没有问题。
有人能解释一下我在
[BASE\u DIR/'templates']
行中遗漏了什么吗? 多谢各位


我正在使用Python3.8和Django3.1。

为了使用
BASE\u DIR/“模板”
,您需要
BASE\u DIR
作为一个模板

我怀疑您的settings.py是使用Django的早期版本创建的,因此
BASE\u 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

我的设置是用Django3.0创建的,后来我将django升级到了3.1,但该设置仍然存在。事实上,它说:
BASE\u DIR=os.path.dirname(os.path.dirname(os.path.abspath(\uu文件\uuuuu)))
,所以这可能是正确的答案。好吧,我尝试了,并将设置从
BASE\u DIR=os.path.dirname(os.path.dirname(os.path.abspath(\u文件\uuu))
更改为
BASE\u DIR=path(\uu文件)。resolve().parent.parent
和它现在可以正常工作了。谢谢@AlasdairBTW:我还包括:
从pathlib导入路径
(对于可能遇到此问题的人)使用
os.Path.join()
就可以了,但是你不应该使用
[BASE\u DIR,'templates']
-这是在
DIRS
中添加两个目录-BASE DIR本身和
'templates'
(有时可能用作相对目录)
from pathlib import Path 
import os

BASE_DIR = Path(__file__).resolve().parent.parent