Django配置TEMPLATE_DIRS报路径类型错误且模板页面404无法访问
Django 运行故障解决方案
1. 模板配置类型错误修复
错误根源
你反复出现路径类型报错的核心原因是settings.py中TEMPLATES配置的DIRS字段嵌套了两层序列:TEMPLATE_DIRS本身已经是列表/元组类型,你又将它放在了额外的[]中,导致DIRS的实际值为[[模板路径]],Django 读取到的是列表而非路径字符串,因此触发类型错误。
修复方案
二选一即可:
- 方案1(推荐,符合高版本Django规范):删除单独的
TEMPLATE_DIRS全局配置,直接把路径写在DIRS中
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.template.context_processors.media', ], }, }, ]
- 方案2(保留
TEMPLATE_DIRS变量):去掉DIRS外层的[],直接赋值
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) TEMPLATES = [ { # 其余配置不变 'DIRS': TEMPLATE_DIRS, # 其余配置不变 } ]
2. 访问路径404错误修复
错误根源
项目根路由myProject/urls.py中没有注册myApp的路由规则,仅配置了accounts和admin的路由,因此所有myApp下的路径都无法匹配。另外你粘贴的views.py内容是错误的,错把urls.py的代码粘了进去。
修复方案
- 修改
myProject/urls.py,新增myApp路由注册:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('accounts/', include('accounts.urls')), path('admin/', admin.site.urls), # 新增myApp路由,前缀留空的话访问根路径即可进入myApp的index页 path('', include('myApp.urls')), ]
- 修正
views.py代码,补充视图渲染逻辑:
from django.shortcuts import render def index(request): return render(request, 'myApp/index.html') def signup(request): return render(request, 'myApp/signup.html')
验证效果
所有配置修改完成后,重新执行python manage.py runserver,访问127.0.0.1:8000即可正常加载index页面,访问127.0.0.1:8000/signup可加载注册页面,不会再出现配置错误和404问题。
内容的提问来源于stack exchange,提问作者Dzhud
相关产品推荐
相关产品推荐

