Django:未找到反向URL模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:未找到反向URL模式相关的知识,希望对你有一定的参考价值。

我试图让regex(Django URL)与查询集一起使用。我尝试使用模板URL的不同模式,但它不起作用。

通用ListView:

class ProductListView(ListView):
    template_name = "main/product_list.html"
    paginate_by = 4

    def get_queryset(self):
        tag = self.kwargs["tag"]
        self.tag = None

        if tag != "all":
            self.tag = get_object_or_404(
                models.ProductTag, slug=tag
            )

        if self.tag:
            products = models.Product.objects.active().filter(
                tags=self.tag
            )
        else:
            products = models.Product.objects.active()

        return products.order_by("name")

我的网址:

path("products/<slug:tag>/", views.ProductListView.as_view(), name='products'),

模板:

我无法在下面的模板中使用它。我尝试传递不同的关键字参数,但它不起作用:

<li class="nav-item">
    <a class="nav-link" href="{% url 'products' %}">Products</a>
</li>

错误:

Reverse for 'products' with arguments '('',)' not found. 1 pattern(s) tried: ['products\/(?P<tag>[-a-zA-Z0-9_]+)\/$']
答案

你的products路线需要一个slug参数。所以你必须给它一个。

它必须是这样的

<li class="nav-item">
    <a class="nav-link" href="{% url 'products' 'my-nice-slug' %}">Products</a>
</li>

在这种情况下,my-nice-slug当然应该是一些现有的slu ..

另一答案

以前的答案是正确的,你想要的确切网址就是 -

{% url 'products' product.slug %}

如果product在其模型中有一个slug字段,其中包含slug或 -

{% url 'products' product.tag %}

如果product在其模型中有一个包含slug的tag字段。

以上是关于Django:未找到反向URL模式的主要内容,如果未能解决你的问题,请参考以下文章

反向未找到错误

反向未找到错误

NoReverseMatch 错误。未找到“...”的反向

NoReverseMatch:未找到“关于”的反向。 'about' 不是有效的视图函数或模式名称

使用参数 '()' 和未找到关键字参数的 ' 反向。尝试了 1 种模式:

django 中的反向函数出错。无法匹配模式