В моем блоге я хотел бы иметь генератор каналов для новых сообщений, основанных на категориях. У меня есть две простые модели в models.py :
class Category(models.Model):
category_name = models.CharField(....)
slug_category = models.SlugField(....)
publishing_date = models.DateTimeField(....)
def __str__(self):
return self.category_name
def get_absolute_url(self):
return reverse("single_blogcategory", kwargs={"slug_category": self.slug_category})
class Post(models.Model):
title = models.CharField(....)
slug_post = models.SlugField(....)
description = models.TextField(....)
draft = models.BooleanField(....)
category = models.ForeignKey(Category, ....)
publishing_date = models.DateTimeField(....)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("single_blogpost", kwargs={
"slug_post": self.slug_post,
"slug_category": self.category.slug_category,
})
В views.py У меня такая ситуация:
post_filter = BlogPost.objects.filter(Q(draft=False) & Q(publishing_date__lte=timezone.now()))
def categoryList(request):
category_list = BlogCategory.objects.all()
context = {"category_list": category_list}
return render(request, "blog/list_categories.html", context)
def singleCategory_postList(request, slug_category):
category = get_object_or_404(BlogCategory, slug_category=slug_category)
blogpost_full = post_filter.filter(category=category)
paginator = Paginator(blogpost_full, 10)
page = request.GET.get("pagina")
post_list = paginator.get_page(page)
context = {
"category": category,
"post_list": post_list,
}
return render(request, "blog/single_category.html", context)
def singlePost(request, slug_post, slug_category):
category = get_object_or_404(BlogCategory, slug_category=slug_category)
blogpost = get_object_or_404(post_filter, slug_post=slug_post)
category_blogpost = BlogPost.objects.filter(category=category)
context = {
"category": category,
"blogpost": blogpost,
"category_blogpost": category_blogpost
}
return render(request, "blog/single_post.html", context)
Это feed.py :
class RssSiteNewsFeedBlogCategory(Feed):
title = "Nuovo articolo online!"
link = "/sitenews/"
description = "Ultime news"
def items(self):
return BlogCategory.objects.filter(slug_category=slug_category).order_by('-publishing_date')[:5]
def item_title(self, item):
return item.title
def item_pubdate(self, item):
return item.publishing_date
def item_description(self, item):
return item.description
И это urls.py :
path('<slug:slug_category>/<slug:slug_post>/', views.singlePost, name='single_blogpost'),
path('categories/', views.categoryList, name='blogcategory_list'),
path('<slug:slug_category>/', views.singleCategory_postList, name='single_blogcategory'),
path('<slug:slug_category>/feed/', RssSiteNewsFeedBlogCategory(), name='blogcategory_feed'),
Когда я пытаюсь увидеть канал для одной из моих категорий я вижу это сообщение об ошибке:
NameError в / blog / gis / feed / name 'slug_category' не определено
Что я не так