为了账号安全,请及时绑定邮箱和手机立即绑定

如何在使用 id 作为参数的反向时解决 django 中的 NoReverseMatch?

如何在使用 id 作为参数的反向时解决 django 中的 NoReverseMatch?

慕码人2483693 2023-12-26 16:23:43
因此,我大概是因为传递的 id 值大于 9 而得到了 NoReverseMatch。这是我收到的错误消息:Reverse for 'article-details' with arguments '('2', '9')' not found. 1 pattern(s) tried: ['a/(?P<pk>[0-9]+)$']这是我的代码:Models.pyclass Post( models.Model):title = models.CharField( max_length = 250 )author = models.ForeignKey( User , on_delete=models.CASCADE )body = models.TextField()def get_absolute_url(self):    print((self.id))    return reverse('article-details' , args= str(self.id))urls.pyurlpatterns = [path ( 'a/<int:pk>' ,  ArticleDetailView.as_view() , name='article-details' ) ,path('create/' , CreatePost2.as_view() , name='create_post' ) ,path ( 'p/<int:pk>' ,  postDetails , name= 'post-details' ) ,]我认为,由于每当使用 id > 9 调用反向时,数据库中都会有超过 10 个条目,因此它会将其解释为具有 2 个值的对。我该如何解决这个问题?
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

Args 像元组一样接受可迭代对象。但字符串也是可迭代的,因此如果您传递单个字符串'29',它会将其解释为两个参数29

您应该将self.id(或者可能更好self.pk)包装在一个单例元组中:

def get_absolute_url(self): 
   return reverse('article-details' , args=(self.pk,))


查看完整回答
反对 回复 2023-12-26
  • 1 回答
  • 0 关注
  • 35 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信