【问题标题】:how to use class based views in django如何在 django 中使用基于类的视图
【发布时间】:2019-08-29 13:27:39
【问题描述】:

我想使用基于类的视图而不是基于函数的视图来显示模板。 如何将此代码更改为基于类的视图

views.py

 def homepage(request):
    categories = Category.objects.filter(active=True)
    products = Product.objects.filter(active=True).order_by('-created')
    featured_products = Product.objects.filter(featured=True)
    return render(request,'shop/base.html',{'categories':categories,'product':products,'featured_products':featured_products})

def categories(request,slug):
    category = Category.objects.get(slug=slug)
    products = Product.objects.filter(category=category,active=True)
    return render(request,'shop/products_list.html',{'products':products})

【问题讨论】:

  • 这太宽泛了。展示您的尝试和遇到的问题。
  • 我想使用基于类的视图而不是这种基于函数的方法来显示 html 模板
  • 是的。您需要尝试一下,就您编写的代码遇到的问题向我们提出任何具体问题。

标签: django


【解决方案1】:
class HomePage(TemplateView):
    template_name = "base.html" 

    def get_context_data(self, **kwargs):
        context = super(HomePage, self).get_context_data(**kwargs)
        context['categories'] = Category.objects.filter(active=True)
        context['products'] = Product.objects.filter(active=True).order_by('-created')
        context['featured_products'] = Product.objects.filter(featured=True)
        return context

要添加一些超出通用视图提供的额外信息,您应该添加额外的上下文Documentation Here

查看此答案,了解如何将其他参数传递给基于类的视图 Here

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2020-11-06
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 2014-09-28
    相关资源
    最近更新 更多