Django视图显示异常:访问newdevice页面却展示computers视图
Django路由匹配异常:访问newdevice页面显示computers页面内容
问题根源
你的路由配置存在两处关键错误:
- 项目urls重复嵌套:同时配置了
path('computers/', include('computers.urls'))和path('computers/newdevice/', include('computers.urls')),当访问/computers/newdevice/时,会匹配到第二个include规则,进入应用urls后又命中空路径的views.computers,导致显示computers页面。 - 应用urls路径冗余:
path('computers/newdevice/', views.newdevice...)中重复了computers/前缀,项目urls已经指定了computers/作为应用路由的前缀,应用内路径只需写相对部分即可。
解决方案
1. 修改项目根目录下的urls.py
删除多余的computers/newdevice/路由规则,保留唯一的应用入口:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('computers/', include('computers.urls')), path('admin/', admin.site.urls), ]
2. 修改应用目录下的urls.py
调整newdevice的路由路径,去掉冗余的computers/前缀:
from django.urls import path from . import views urlpatterns = [ path('', views.computers, name='computers'), path('newdevice/', views.newdevice, name='newdevice') ]
额外优化(可选)
computers视图函数可以简化为Django推荐的写法,无需手动加载模板和构建HttpResponse:
from django.shortcuts import render def computers(request): context = { 'a':[ { 'sample1': 'WMCD0001', 'sample2': 'Desktop', 'sample3': 'Lenovo ThinkPad', 'sample4': '10.10.10.100', 'sample5': 'Active', }, ] } return render(request, 'computers/computers.html', context)
修改完成后,访问localhost:8000/computers/会正常显示computers页面,访问localhost:8000/computers/newdevice/会正确加载newdevice页面。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

