微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

在最新的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。