forgot to paste the model methods @models.permalink def get_absolute_url(self): return ('catalog_category', (), {'category_slug' : self.category_slug })
@models.permalink def get_absolute_url(self): return ('catalog_product', {}, {'product_slug': self.product_slug}) пятница, 7 августа 2015 г., 21:15:25 UTC+3 пользователь Александр Мусаров написал: > > Hi, just wrapping my head around django, and trying to write an ecommerce > store, when trying to pull out all products belonging to a category getting > such an error > > NoReverseMatch at /catalog/smartphony/ > > Reverse for 'catalog_product' with arguments '()' and keyword arguments > '{'product_slug': 'samsung-galaxy-s5-sm-g900f-16gb'}' not found. 0 pattern(s) > tried: [] > > Request Method: GET Request URL: http://127.0.0.1:8000/catalog/smartphony/ > Django > Version: 1.8.2 Exception Type: NoReverseMatch Exception Value: > > Reverse for 'catalog_product' with arguments '()' and keyword arguments > '{'product_slug': 'samsung-galaxy-s5-sm-g900f-16gb'}' not found. 0 pattern(s) > tried: [] > > Exception Location: > C:\Users\LAPTOP\djangoenvs\py34\lib\site-packages\django\core\urlresolvers.py > in _reverse_with_prefix, line 496 Python Executable: > C:\Users\LAPTOP\djangoenvs\py34\Scripts\python.exe Python Version: 3.4.3 > Python > Path: > > ['C:\\Users\\LAPTOP\\Desktop\\djangodev\\eshop', > > 'C:\\Users\\LAPTOP\\djangoenvs\\py34\\lib\\site-packages\\setuptools-18.0.1-py3.4.egg', > 'C:\\Windows\\system32\\python34.zip', > 'C:\\Users\\LAPTOP\\djangoenvs\\py34\\DLLs', > 'C:\\Users\\LAPTOP\\djangoenvs\\py34\\lib', > 'C:\\Users\\LAPTOP\\djangoenvs\\py34\\Scripts', > 'C:\\Python34\\Lib', > 'C:\\Python34\\DLLs', > 'C:\\Users\\LAPTOP\\djangoenvs\\py34', > 'C:\\Users\\LAPTOP\\djangoenvs\\py34\\lib\\site-packages'] > > Server time: Пт, 7 Авг 2015 21:07:01 +0300 > Error during template rendering > > In template > C:\Users\LAPTOP\Desktop\djangodev\eshop\catalog\templates\categories\category.html, > > error at line *17* > Reverse for 'catalog_product' with arguments '()' and keyword arguments > '{'product_slug': 'samsung-galaxy-s5-sm-g900f-16gb'}' not found. 0 > pattern(s) tried: [] 7 <ol class="breadcrumb"> 8 <li><a > href="/">Главная</a></li> 9 <li><a href="/catalog/">Каталог</a></li> 10 <li > class="active">{{ c.category_name }}</li> 11 </ol> 12 </div> 13 <h1>{{ > c.category_name }}</h1> 14 <br/><br/> 15 {% for p in products %} 16 <div > class = "product_thumbnail"> > > > 17 <a href = " {{ p.get_absolute_url }} ">-- Here the debugger shows the > mistake > > > 18 <img src = "{{ MEDIA_URL }}/catalog/products/thumbnails/{{ > p.product_image }}" alt = "{{ p.product_name }}" class = "bn" /> 19 <br/> > 20 {{ p.product_name }} 21 </a> 22 </div> 23 {% endfor %} 24 > 25 {% endblock %} > > > Here are my URL patterns > > url(r'^(?P<category_slug>[-\w]+)/$', views.category, name = > 'category_detail' ), > url(r'^(?P<category_slug>[-\w]+)/(?P<product_slug>[-\w]+)/$', > views.product, 'catalog_product', name = 'product_detail'), > > Here are the corresponding views > > def category(request, category_slug): > category_list = Category.objects.filter(category_is_active = True) > c = get_object_or_404(Category, category_slug = category_slug) > products = c.product_set.all() > page_title = c.category_name > meta_keywords = c.category_meta_keywords > meta_description = c.category_meta_description > return render(request, 'categories/category.html', locals()) > > def product(request, product_slug): > category_list = Category.objects.filter(category_is_active = True) > p = get_object_or_404(Product, product_slug = product_slug) > categories = p.product_categories.all() > page_title = p.product_name > meta_keywords = p.product_meta_keywords > meta_description = p.product_meta_description > > # need to evaluate the HTTP method > if request.method == 'POST': > # add to cart... create the bound form > postdata = request.POST.copy() > form = ProductAddToCartForm(request, postdata) > # check if posted data is valid > if form.is_valid(): > # add to cart and redirect to cart page > cart.add_to_cart(request) > # if test cookie worked, get rid of it > if request.session.test_cookie_worked(): > request.session.delete_test_cookie() > url = urlresolvers.reverse('show_cart') > return HttpResponseRedirect(url) > else: > # it's a GET, create the unbound form. Note request as a kwarg > form = ProductAddToCartForm(request = request, label_suffix = ':') > # assign the hidden input the product slug > form.fields['product_slug'].widget.attrs['value'] = product_slug > # set the test cookie on our first GET request > request.session.set_test_cookie() > return render(request, 'products/product.html', locals()) > > and here is the part of the corresponding view > > {% for p in products %} > <div class = "product_thumbnail"> > <a href = "{{ p.get_absolute_url }}"> > <img src = "{{ MEDIA_URL }}/catalog/products/thumbnails/{{ > p.product_image }}" alt = "{{ p.product_name }}" class = "bn" /> > <br/> > {{ p.product_name }} > </a> > </div> > {% endfor %} > > Thanx in advance ) > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/a9d529d0-57fb-418d-9d21-f92168e5a284%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.