Templates不存在:如何指定base_site.html路径供博客视图正常访问
base_site.html路径配置解决方案
1. 确认模板存放目录结构
优先把模板文件放在项目根目录的templates文件夹下,如果你是要覆写Django admin的默认base_site.html,需要额外嵌套一层admin目录,最终路径结构如下:
项目根目录/ ├── 项目同名配置文件夹/ ├── templates/ │ └── admin/ # 仅覆写admin模板时需要该层目录,自定义博客模板可省略 │ └── base_site.html └── manage.py
如果是博客自定义视图调用的公共模板,直接把base_site.html放在templates根目录即可。
2. 配置settings.py模板搜索路径
打开项目同名配置文件夹下的settings.py,找到TEMPLATES配置项,确保DIRS字段已指定根目录的templates路径,配置示例:
import os TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 必须添加该行配置 'APP_DIRS': True, '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 3.1及以上版本可以直接简写为'DIRS': [BASE_DIR / 'templates'],无需导入os模块。
3. 视图内正确指定模板路径
调用模板时路径要和实际存放位置匹配:
- 模板放在
templates/admin下时,调用路径写'admin/base_site.html' - 模板放在
templates根目录下时,调用路径写'base_site.html'
视图调用示例:
from django.shortcuts import render def blog_view(request): return render(request, 'base_site.html', context={})
内容的提问来源于stack exchange,提问作者Smile
相关产品推荐
相关产品推荐

