添加get_absolute_url后出现‘blog未注册命名空间’Django错误求助
问题解决方案
1. 给博客应用的URL添加名称标识
修改博客应用下的urls.py,给对应的路径加上name参数,让Django能识别这个URL:
urlpatterns = [ path('post/<str:title>', views.detalis, name='post') ]
2. 注册博客应用的命名空间
在博客应用的urls.py最顶部加上app_name,指定命名空间为blog,这样reverse('blog:post')才能找到对应的URL:
app_name = 'blog' urlpatterns = [ path('post/<str:title>', views.detalis, name='post') ]
3. 修正get_absolute_url方法
你目前的方法只是打印了反向解析的结果,没有返回实际的URL,同时要确保导入reverse模块:
from django.urls import reverse class Post(models.Model): # 你的其他字段定义... def get_absolute_url(self): return reverse('blog:post', kwargs={'title': self.title})
报错原因说明
- 你在
get_absolute_url里用了reverse('blog:post'),但既没给博客应用注册命名空间,也没给对应的URL设置名称,Django找不到匹配的路由配置。 - 另外原方法没有返回值,模板调用时也无法获取到正确的URL。
内容的提问来源于stack exchange,提问作者آرشام نوریان
相关产品推荐
相关产品推荐

