Подскажите как правильно организовать каталог товаров.
Хотелось бы иметь такую структуру путей:
catalog/shop/ - корень магазина
catalog/shop/cat1/ - первый уровень вложености
catalog/shop/cat1/cat2/ - второй уровень
Сейчас я сделал одну функцию вида:
def show_catalog(request, shop, cat1, cat2):
cont = RequestContext(request, {})
if cat2 != None: # зашли в под под раздел
parent1 = Category.objects.get(id__exact=cat1, shop__exact=shop)
parent2 = Category.objects.get(id__exact=cat2, shop__exact=shop)
cont['link_path']=[shop, parent1.name, parent2.name]
return render_to_response('catalog.html',context_instance=cont)
elif cat1 != None: # зашли в под раздел
cat_list = Category.objects.filter(parent_category__exact=cat1, shop__exact=shop)
cont['cat_list'] = cat_list
parent1 = Category.objects.get(id__exact=cat1, shop__exact=shop)
cont['link_path']=[shop, parent1.name]
cont['shop'] = shop
return render_to_response('catalog.html',context_instance=cont)
else: # зашли в корень магазина
cat_list = Category.objects.filter(parent_category__exact=None, shop__exact=shop)
cont['cat_list'] = cat_list
cont['shop'] = shop
cont['link_path'] = [shop]
return render_to_response('catalog.html',context_instance=cont)
cat_list - список подразделов текущего раздела
в urls.py прописано так:
url(r'^catalog/(?P<shop>[a-zA-Z0-9]{1,50})/$', 'show_catalog', {'cat1':None, 'cat2':None}, name='catalog'),
url(r'^catalog/(?P<shop>[a-zA-Z0-9]{1,50})/(?P<cat1>[a-zA-Z0-9]{1,50})/$', 'show_catalog', {'cat2':None}, name='catalog_cat1'),
url(r'^catalog/(?P<shop>[a-zA-Z0-9]{1,50})/(?P<cat1>[a-zA-Z0-9]{1,50})/(?P<cat2>[a-zA-Z0-9]{1,50})/$', 'show_catalog', name='catalog_cat2'),
{% for cat in cat_list %}
<li><a href="{% url catalog_cat1 shop=shop cat1=cat.id %}">{{ cat.name }}</a></li>
{% endfor %}