Django: путь подачи в зависимости от категории - PullRequest
0 голосов
/ 11 апреля 2020

В моем блоге я хотел бы иметь генератор каналов для новых сообщений, основанных на категориях. У меня есть две простые модели в 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' не определено

Что я не так

...