【问题标题】:Django error: Reverse for 'details' with arguments '()' and keyword argumentsDjango错误:使用参数“()”和关键字参数反转“详细信息”
【发布时间】:2026-01-03 23:10:01
【问题描述】:

这是我的 django 应用程序的一部分,我想使用 get_absolute_url 创建链接,但出现错误:

Reverse for 'details' with arguments '()' and keyword arguments '{'slug': 'product'}' not found. 0 pattern(s) tried: []

我的模特:

class PortfolioItem(models.Model):
    name_item = models.CharField(max_length=120)
    slug = models.SlugField(unique=True)
    date_from = models.DateField('date from')
    date_to = models.DateField('date to')
    description = models.TextField()
    author = models.ForeignKey(User)

    def __str__(self):
        return self.name_item

    def get_absolute_url(self):
        return reverse('details', kwargs={"slug": self.slug})

这是我的看法:

class PortfolioDetail(DetailView):
    model = PortfolioItem
    template_name = "portfoliodetail.html"

这是我的网址:

urlpatterns = [
    url(r'^$', PortfolioList.as_view(), name='home'),
    url(r'^portfolio/(?P<slug>\w+)/$', PortfolioDetail.as_view(), name='details'),
]

这是一个模板:

<ul>
    {% for i in portfolioitem_list %}
        <li><a href="{{ i.get_absolute_url }}">{{ i.name_item }}</a></li>
    {% endfor %}
</ul>

【问题讨论】:

  • lol != details,您使用的实际代码是什么?
  • @Sayse 抱歉,已更正!
  • 这些 url 有命名空间吗?
  • 是的,在这个地址下:url(r'^portfolio/', include('portfolio.urls', namespace='portfolio')),

标签: python regex django url


【解决方案1】:

引用url时需要包含命名空间

return reverse('portfolio:details', kwargs={"slug": self.slug})

【讨论】:

  • 太棒了!非常感谢! @sayse
最近更新 更多