将基于函数的视图转换为基于类的视图 [英] transforming function based view to class based view

查看:46
本文介绍了将基于函数的视图转换为基于类的视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我认为它应该更简单,但这是我基于函数的带有过滤器的视图

I think it should be simpler but here's my function based view with filter

def withSub(request):
    post = Post.objects.filter(with_or_without_sub='WS')
    paginator = Paginator(post, 2)
    page = request.GET.get('page') 
    post = paginator.get_page(page)

    content_dict = {
        'posts':post,
        'paginator':paginator

    }
    return render(request, 'community/withSub.html', content_dict)

我只是想以以下格式将其切换到基于类的视图,我只想像在函数视图中一样将过滤器放入Post模型中

I simply want to switch it to class based view in a format as below, I just want to put filter to Post model as I did in function view

class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'  # <app>/<model>_<viewtype>.html

推荐答案

可能类似于以下内容.您可能需要测试和调试.使用 request.GET 即可.

It could be something like the follows. You might need to test and debug. The request.GET is used, so it's get.

from django.views.generic.list import ListView

class PostListView(ListView):
    model = Post
    template_name = 'community/home.html'  # <app>/<model>_<viewtype>.html

    def get(self, request, *args, **kwargs):
        post = Post.objects.filter(with_or_without_sub='WS')
        paginator = Paginator(post, 2)
        page = request.GET.get('page') 
        post = paginator.get_page(page)

        content_dict = {
            'posts':post,
            'paginator':paginator

        }

        context = self.get_context_data()
        context.update(content_dict)
        return self.render_to_response(context)

这篇关于将基于函数的视图转换为基于类的视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆