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:未找到“关于”的反向。 'about' 不是有效的视图函数或模式名称