为了账号安全,请及时绑定邮箱和手机立即绑定

如何将函数隐藏到listview?

如何将函数隐藏到listview?

波斯汪 2023-05-16 09:43:20
这是我的代码,我使用 django v3 并希望将 views.py 中的类别函数转换为列表类(ListView)以用于分页。怎么办?万分感谢urls.pyfrom django.urls import path from .views import  posts_category        urlpatterns = [        path('<slug:slug>/', posts_category, name="posts_category"),        ]model.pyclass Category(models.Model):    parent = models.ForeignKey('self', blank=True, null=True, related_name='children', on_delete=models.CASCADE)    title = models.CharField(max_length=70, unique=True)    slug = models.SlugField(max_length=90, unique=True)    description = RichTextUploadingField(blank=True, null=True)    image = models.ImageField(blank=True, upload_to="imgs")    def __str__(self):        return self.title    class MPTTMeta:        order_insertion_by = ['title']views.pydef posts_category(request, slug):    category = Category.objects.all()    post = Posts.objects.filter(category__slug=slug, status="p")    context = {        'category': category,        'post': post,    }    return render(request, 'posts_category.html', context)
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

我不知道在同一页面中显示类别和产品是否是个好主意(从性能的角度来看),但您可以使用以下代码将 FBV 转换为 CBV:


from django.views.generic import ListView



class PostCategoryView(ListView):

    template_name = 'posts_category.html'

    

    def get_queryset(self):

        slug = self.kwargs.get('slug')

        return Posts.objects.filter(category__slug=slug, status="p")


    def get_context_data(self, **kwargs):

        context = super().get_context_data()

        context['categories'] = Category.objects.all()

        return context

并将您的更改urls为:


from django.urls import path 

from .views import  PostCategoryView

    

    urlpatterns = [

        path('<slug:slug>/', PostCategoryView.as_view(), name="posts_category"),

    

    ]

最后,您可以像下面的代码一样在模板中使用上下文数据:


{% for obj in object_list %}

    {{ obj.id }} - {{ obj.name }}</a><br>

    {% endfor %}

请注意,这object_list是您的 Post 对象的列表,您应该更改obj.name为 Post 模型的其他字段。最后,您可以使用类似的东西object_list(这里我们使用categories)并循环遍历它以显示您的类别或其他内容的数据。


查看完整回答
反对 回复 2023-05-16
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信