Guys, tell me what's the problem? What are the solutions? I pass slug to urls and try to filter articles by category.
When you go to the category page gives an error:
DoesNotExist at /category/kino/ Posts matching query does not exist. Request Method: GET Request URL: http://127.0.0.1:8000/category/kino/ Django Version: 1.10.3 Exception Type: DoesNotExist Exception Value: Posts matching query does not exist. views.py
def get_post(request, post_slug): post = Posts.objects.get(post_slug=post_slug) return render(request, 'page.html', {'post':post}) def get_category(request, category_slug): cat_id = get_object_or_404(Category, slug=category_slug) posts = Posts.objects.order_by('-pub_date').filter(id=cat_id, is_active=True) return render(request, 'category.html', {'posts':posts}) urls.py
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$', index, name='home'), url(r'^(?P<post_slug>\S+)/$', get_post, name='post'), url(r'^category/(?P<category_slug>\S+)/$', get_category, name='category'), ] models.py
class Posts(models.Model): class Meta: verbose_name = u'Статьи' verbose_name_plural = u'Статьи' title = models.CharField(max_length=160, verbose_name='Заголовок') body = models.TextField(verbose_name='Текст статьи') create_date = models.DateTimeField(auto_now_add=True, verbose_name=u'Дата создания', editable=False) pub_date = models.DateTimeField(auto_now=True, verbose_name=u'Дата публикации') is_active = models.BooleanField(default=False, verbose_name='Активация') post_slug = AutoSlugField(populate_from='title', unique=True) category = models.ForeignKey('Category', on_delete=models.PROTECT, default=False) def __str__(self): return '%s - %s'%(self.title, str(self.create_date)) class Category(models.Model): class Meta: verbose_name = u'Категория' verbose_name_plural = u'Категории' title = models.CharField(max_length=160, verbose_name='Название категории') parenth = models.ForeignKey('self', default=None, blank=True, null=True) slug = AutoSlugField(unique=True, populate_from='title') def __str__(self): return '%s (%s)'%(self.title, self.slug)