簡體   English   中英

Django:找不到反向 URL 模式

[英]Django: Reverse URL patterns not found

我正在嘗試使正則表達式(Django URL)與查詢集一起使用。 我用模板 URL 嘗試了不同的模式,但沒有用。

通用列表視圖:

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當然應該是一些現有的 slug。

上一個答案是正確的,您想要的確切網址很簡單-

{% url 'products' product.slug %}

如果product的模型中有包含 slug 的slug字段,或者 -

{% url 'products' product.tag %}

如果product的模型中有包含 slug 的tag字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM