Heroku部署Django应用时如何解决str与str不支持/运算的TypeError
解决Django部署Heroku时模板路径报错问题
错误原因
你的BASE_DIR是通过os.path系列方法定义的字符串类型,但你用了/运算符来拼接路径——这个运算符是pathlib.Path对象专属的,字符串与字符串之间无法用/做运算,因此触发了TypeError。
两种解决方法
方法一:改用Path对象定义BASE_DIR(推荐,Django 3.1+默认写法)
修改settings.py里的BASE_DIR定义,换成pathlib的写法:
from pathlib import Path # 替换原来的os.path写法 BASE_DIR = Path(__file__).resolve().parent.parent
之后保持模板目录配置不变即可:
'DIRS': [BASE_DIR / 'templates'],
这种写法更简洁,还能自动适配不同操作系统的路径分隔符。
方法二:用os.path.join拼接路径(保留原BASE_DIR定义)
如果不想改动BASE_DIR的定义,就用os.path.join来拼接模板路径,这是字符串路径拼接的标准方式:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
这个方法无需额外导入模块(只要你已经导入了os),直接就能用,同样能正确生成模板目录的路径。
额外注意
确认项目根目录下确实存在templates文件夹,并且里面的模板文件结构符合Django要求,避免后续出现找不到模板的问题。
内容的提问来源于stack exchange,提问作者user19587734
相关产品推荐
相关产品推荐

