You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django访问/polls/top/触发NoReverseMatch错误:'polls'未注册命名空间

解决Django NoReverseMatch: 'polls' is not a registered namespace错误

这个问题我之前也碰到过,本质是Django找不到你指定的polls URL命名空间,只要补全两处配置就能解决:

1. 给子应用polls的urls.py添加命名空间声明

打开polls/urls.py,首先要指定app_name(这是子应用的命名空间标识),同时补全你的URL规则(你原来的代码没写完,我帮你补全了必要的部分):

from django.conf.urls import url
from django.conf import settings
from django.conf.urls.static import static
from . import views  # 导入你的视图函数

# 关键:设置子应用的命名空间名称
app_name = 'polls'

urlpatterns = [
    # 匹配/polls/top/路径,关联top视图,设置name方便反向解析
    url(r'^top/$', views.top, name='top'),
    # 匹配/polls/detail/路径,关联detail视图
    url(r'^detail/$', views.detail, name='detail'),
]

# 如果需要静态文件/媒体文件的路由,保留你原来的配置
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

2. 在父应用mysite的urls.py中注册命名空间

打开mysite/urls.py,在include子应用URL的时候,明确指定namespace='polls',这样Django才能把这个命名空间全局注册:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # 关键:include时指定namespace,和子应用的app_name对应
    url(r'^polls/', include('polls.urls', namespace='polls')),
]

额外检查:模板中的反向URL写法

如果你在模板(比如index.html或detail.html)里用了反向解析URL,要确保写法是{% url 'polls:top' %}这种命名空间+URL名称的格式,而不是直接写{% url 'top' %},这样Django才能正确找到对应的路由。


内容的提问来源于stack exchange,提问作者user9341676

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:00:24