Django提示DEBUG=True且未配置URL错误,附代码求排查
错误原因分析与解决方法
问题根源
URL路由重复叠加:
根目录urls.py中把空路径''关联到了meetups.urls,而meetups/urls.py又给视图添加了meetups/前缀,导致实际可访问的有效路径是/meetups/meetups/,但根路径/没有对应的路由配置,Django因此抛出"未配置URL"的提示。模板路径书写冗余:
Django会自动搜索每个app下的templates目录,你在render函数里写的templates/meetups/index.html多了一层templates/前缀,会导致Django找不到对应的模板文件(即使路由修复后,也会触发模板不存在的错误)。
解决步骤
1. 修正URL路由配置
有两种可选的修正方式,选其中一种即可:
方式一:调整子app路由
修改meetups/urls.py,去掉路径前缀,让根路由的空路径直接映射到index视图:from django.urls import path from . import views urlpatterns = [ path('', views.index) # 对应访问路径:domain_name.com/ ]方式二:调整根路由(更符合Django规范)
根目录urls.py中给meetups.urls添加前缀,子app路由保持空路径:
根目录urls.py:from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('meetups/', include('meetups.urls')) # 给子app路由加前缀 ]meetups/urls.py:from django.urls import path from . import views urlpatterns = [ path('', views.index) # 对应访问路径:domain_name.com/meetups/ ]
2. 修正模板路径
修改views.py中的render调用,移除多余的templates/前缀:
from django.shortcuts import render def index(request): return render(request, 'meetups/index.html')
同时确保你的项目结构中存在meetups/templates/meetups/index.html文件,Django会自动在app的templates目录下查找该路径。
内容的提问来源于stack exchange,提问作者Rip
相关产品推荐
相关产品推荐

