У меня есть проект django, который близок к функциональности e-commerce wesite.NoReverseMatch в категории/одежда/Виды на основе Django
Имеются 4 страницы связаны друг с другом. Первая страница отображает Категории, 2-й подкатегории, третий Список продуктов и четвёртую деталь продукта и я использую слизней для навигации.
ОШИБКА Reverse for 'product-list' with arguments '('', 'women-clothes')' and keyword arguments '{}' not found. 1 pattern(s) tried: ['category/(?P<category_slug>[-\\w]+)/(?P<subcategory_slug>[-\\w]+)/$']
Категория в подкатегорию связывая код на category_list.html является <a href="{% url 'products-app:sub-category' category.category_slug %}">{{ category.name }}</a>
и на views.py
class CategoryListView(ListView):
models = Category
template_name = 'products/category_list.html'
context_object_name = "Category list"
def get_queryset(self):
"""
Returns all categories.
"""
return Category.objects.get_queryset().all()
и urls.py
app_name = 'products'
urlpatterns = [
url(r'^$', CategoryListView.as_view(), name='categories'),
url(r'^(?P<category_slug>[-\w]+)/$', SubcategoryListView.as_view(), name='sub-category'),
url(r'^(?P<category_slug>[-\w]+)/(?P<subcategory_slug>[-\w]+)/$', ProductListView.as_view(), name='product-list'),
url(r'^(?P<category_slug>[-\w]+)/(?P<subcategory_slug>[-\w]+)/(?P<pk>\d+)/$', ProductDetailView.as_view(), name='product-detail'),]
Проблема связана с Подкаталог_list.html до product_list. Так как мне нужно category_slug и subcategory_slug быть перейти к
<a href="{% url 'products-app:product-list' category_slug subcategory_slug %}">{{ object.name }}</a>
.
Я не знаю, как реализовать эту логику для использования cbv. Я хочу передать category_slug т.к. от Категория модели и запросы от Подкатегория модель. views.py
class SubcategoryListView(ListView):
"""
Browse all products in the sub-catalogue.
"""
model = Subcategory
template_name = 'products/subcategory_list.html'
context_object_name = "Sub-Category list"
category_model = Category
def get_queryset(self):
"""
Returns all sub-categories.
"""
self.category = get_object_or_404(Category, category_slug = self.kwargs.get('category_slug'))
return Subcategory.objects.filter(category = self.category)
category.html, который работает.
{% for category in object_list %}
<div class="col-xs-12 col-md-12">
<a href="{% url 'products-app:sub-category' category.category_slug %}">{{ category.name }}</a>
<p>{{ category.category_slug }}</p>
</div>
{% endfor %}
subcategory.html
{% for object in object_list %}
<div class="col-xs-12 col-md-12">
<a href="{% url 'products-app:product-list' object.category_slug object.subcategory_slug %}">{{ object.name }}</a>
<p>subcategory_slug:{{ object.subcategory_slug }}</p>
</div>
{% endfor %}
Как получить category_slug и передать его в приведенном выше зрения так, как я могу итерацию на них по шаблону?
Я обновил оба файла. @ Даниэль Роземан –