如何在 django 中使用基于类的视图
Posted
技术标签:
【中文标题】如何在 django 中使用基于类的视图【英文标题】:how to use class based views in 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 模板 是的。您需要尝试一下,就您编写的代码遇到的问题向我们提出任何具体问题。 【参考方案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
【讨论】:
以上是关于如何在 django 中使用基于类的视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中使用基于类的视图将用户重定向到登录页面? [复制]
如何在 Django 1.3 中使用基于类的视图重定向条件?
当我在基于类的视图中应用过滤器时,如何在 django 中使用分页分页。网址总是不断变化我如何跟踪网址