Django项目hello_world中profile页面无法正常访问问题求助
问题原因
Django的URL路由采用前缀拼接逻辑,你现在的配置存在两个问题:
- 根路由
hello_world/urls.py中给profile_page应用配置的前缀是profile_page,而profile_page/urls.py中又给profile视图配置了路径profile_page,两者拼接后实际可访问的路径是/profile_page/profile_page,你直接访问/profile_page就会触发404报错。 - 子应用的urls.py中不需要重复定义admin路由,admin路由仅需要在项目根urls.py中定义一次即可,多余配置可以删除。
修复方案(二选一即可)
方案1:按多APP路由规范配置(推荐)
修改hello_world/urls.py中profile相关的路由,末尾补斜杠,同时去掉多余的逗号:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('home_page.urls')), path('profile_page/', include('profile_page.urls')) ]
修改profile_page/urls.py,删除多余的admin路由,将视图路径改为空:
from django.urls import path from . import views urlpatterns = [ path('', views.profile, name='profile page'), ]
修改完成后访问/profile_page/即可正常打开profile页面。
方案2:直接配置根路由
如果你不需要给profile应用下的所有路由加统一前缀,可以直接在根urls.py中绑定视图,不需要引入子应用的urls配置:
修改hello_world/urls.py:
from django.contrib import admin from django.urls import path from home_page.views import home from profile_page.views import profile urlpatterns = [ path('admin/', admin.site.urls), path('', home, name='home page'), path('profile_page', profile, name='profile page'), ]
这种情况可以直接删除home_page/urls.py和profile_page/urls.py两个文件,访问/profile_page即可正常打开页面。
额外优化建议
你当前home_page/urls.py中也配置了多余的admin路由,可以直接删除,只保留视图路由即可。
内容的提问来源于stack exchange,提问作者Sudip Das
相关产品推荐
相关产品推荐

