Python 详细视图中的分页[Django]

Python 详细视图中的分页[Django],python,django,listview,pagination,detailview,Python,Django,Listview,Pagination,Detailview,我的模型中有Article和ArticleCategory。文章有很多种类 型号 class ArticleCategory(Created): category_name = models.CharField(max_length=128) slug = models.SlugField(null=False, unique=False) def save(self, *args, **kwargs): if not self.slug:

我的模型中有Article和ArticleCategory。文章有很多种类

型号

class ArticleCategory(Created):
    category_name = models.CharField(max_length=128)
    slug = models.SlugField(null=False, unique=False)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.category_name)
        return super().save(*args, **kwargs)

    def __str__(self):
        return self.category_name

class Article(Created):
    title = models.CharField(max_length=120)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    snippet = models.TextField(null=False)  # ustawić max_lenght
    body = RichTextField(null=False)
    category = models.ManyToManyField(ArticleCategory, related_name='articles')  # TODO: ustawić on_delete
    image = models.ImageField(blank=True, null=True, upload_to='article_image/')
    slug = models.SlugField(null=False, unique=False)

    def save(self, *args, **kwargs):  
        if not self.slug:
            self.slug = slugify(self.title)
        return super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('news:article_detail', kwargs={'pk': self.pk, 'slug': self.slug})
此外,我还有指向特定类别的Url,其中包含该类别的所有文章:

URL

urlpatterns = [
    path('show/<int:pk>/<slug:slug>', ArticleDetailView.as_view(), name='article_detail'),
    path('all/', AllArticlesListView.as_view(), name='all_articles_list'),
    path('category/<slug:slug>/', CategoryArticlesList.as_view(), name='category_articles_list'),
]
SPECIFIC CATEGORY: {{ articlecategory.category_name | upper }}

AND ALL NEWS WITH THIS CATEGORY
{% for article in articlecategory.articles.iterator reversed %}
    <h3>{{ article.title }}</h3> <br>
    {{ article.body | safe }} <br>
{% endfor %}
最后是模板分类\u文章\u列表.HTML

urlpatterns = [
    path('show/<int:pk>/<slug:slug>', ArticleDetailView.as_view(), name='article_detail'),
    path('all/', AllArticlesListView.as_view(), name='all_articles_list'),
    path('category/<slug:slug>/', CategoryArticlesList.as_view(), name='category_articles_list'),
]
SPECIFIC CATEGORY: {{ articlecategory.category_name | upper }}

AND ALL NEWS WITH THIS CATEGORY
{% for article in articlecategory.articles.iterator reversed %}
    <h3>{{ article.title }}</h3> <br>
    {{ article.body | safe }} <br>
{% endfor %}
特定类别:{{articlecategory.CATEGORY_name | upper}
以及所有这类新闻
{articlecategory.articles.iterator%中的项目为%1}
{{article.title}}
{{article.body | safe}}
{%endfor%}
我的问题是。。。如何对视图中的所有特定类别文章进行分页?
如果我在类CategoryArticlesList中使用ListView,那么查询表单me将出现大问题。。。我不知道该怎么办。

A
DetailView
不分页,因为只有一个对象。但是,您可以将其设置为
列表视图
,并添加一些逻辑来传递
文章类别

from django.shortcuts import get_object_or_404

class ArticlesByCategoryListView(ListView):
    template_name = 'news/category_articles_list.html'
    model = Article
    queryset = Article.objects.order_by('-pk')
    paginate_by = 25

    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(
            category__slug=self.kwargs['slug']
        )

    def articlecategory(self):
        return get_object_or_404(ArticleCategory, slug=self.kwargs['slug'])
从django.shortcuts导入get\u object\u或\u 404
类别ArticlesByCategoryListView(列表视图):
模板名称='news/category\u articles\u list.html'
模型=文章
queryset=Article.objects.order_by('-pk')
分页单位=25
def get_queryset(self、*args、**kwargs):
return super().get_queryset(*args,**kwargs).filter(
category__slug=self.kwargs['slug']
)
def类别(自我):
返回get_object_或_404(articleCography,slug=self.kwargs['slug'])
然后,在模板中,我们可以使用以下方式渲染:

SPECIFIC CATEGORY: {{ view.articlecategory.category_name|upper }}

AND ALL NEWS WITH THIS CATEGORY
{% for article in page_obj %}
    <h3>{{ article.title }}</h3> <br>
    {{ article.body|safe }} <br>
{% endfor %}
特定类别:{{view.articleCegory.CATEGORY_name | upper}
以及所有这类新闻
{第_obj%]页中的文章为%
{{article.title}}
{{article.body | safe}}

{%endfor%}
A
DtailView
不分页,因为只有一个对象。但是,您可以将其设置为
列表视图
,并添加一些逻辑来传递
文章类别
。MAGIC!非常感谢。