Django url link error Reverse for 'category' with keyword arguments '{'category.id': 1}' not found. 1 pattern
Im trying to create a product filter, filtering it by category, so I decided to send the category id trough an URL and then filter all products by the specified ID, but im getting troubles to implement it, please healp.
Reverse for 'category' with keyword arguments '{'category.id': 1}' not found. 1 pattern(s) tried: ['category/<int:category\\.id\\Z']
Views
def category(request, category_id):
products = Product.objects.filter(category=category_id)
return
render(request, 'product/category.html', {'products': products})
Model
class Category(models.Model):
name = models.CharField(max_length=255, unique=False, blank=True)
slug = models.SlugField(unique=True)
def __str__(self):
return self.slug
def get_absolute_url(self):
return reverse("product:category", kwargs={"category.id": self.id})
Urls
urlpatterns = [
path('', views.index, name="index"),
path('detail/<int:product_id', views.detail, name="detail"),
path('category/<int:category.id', views.category, name="category")
]
HTML Template, I tried two ways,none of them worked:
{% for category in categories %}
{{category.id}}
<a href="{{category.get_absolute_url}}"></a>
{% comment %}
<a href="{% url 'product:category' category_id=category.id %}"></a>
{% endcomment %}
{% endfor %}
Product Model
class Product(models.Model):
name = models.CharField(max_length=255, unique=False, blank=True)
slug = models.SlugField(unique=True)
category = models.ForeignKey(
Category, on_delete=models.CASCADE, unique=False)
It should be category_id
not category.id
in urls.
Also need >
at the end with closing /
, so try below urls:
urlpatterns = [
path('', views.index, name="index"),
path('detail/<int:product_id>/', views.detail, name="detail"),
path('category/<int:category_id>/', views.category, name="category")
]