Reverse for 'tag' with arguments '('',)' not found. 1 pattern(s) tried: ['tag/(?P[^/]+)$']
今天遇到了这个问题,发现了一个道理,就是{% url %} 解析URL,这个时候一定要主要,传递的参数中是否有空,如果有空请一定要排除,不然就会报错。
我今天就出险了这样的错误,主要是想获取博客的所有标签,及标签所对应的内容。我的urlpatterns规则是这样写的:
path('tag/<str:tag>', views.tag_list, name='tag')
前端调用代码如下:
<li class="submenu"><a target="_blank" href="{% url 'tag' tag %}">{{tag}}</a></li>
运行之后就报错了,提示Reverse for 'tag' with arguments '('',)' not found. 1 pattern(s) tried: ['tag/(?P<tag>[^/]+)$']
当我使用下面这个代码调用的时候,就正常:
<li class="submenu"><a target="_blank" href="tag/{{ tag }}">{{tag}}</a></li>
思考了一下,然后在views打印出tags,发现有一些空的。这时,我想起不是所有的文章都设置了标签。
解决办法
在views中修改代码,增加一个判断文章是否有标签的功能,代码如下:
for ar in arlist: content['total'] +=ar.get_readnum() if ar.tags: atags=ar.tags.split(',') content['tags']+=atags else: print('没有标签')
再次运行,一切正常。
评论