gpt4 book ai didi

python - Django 基于类的 View 和继承

转载 作者:行者123 更新时间:2023-12-01 05:05:34 25 4
gpt4 key购买 nike

我正在使用功能 View 在 Django 中设置布局,但决定将其更改为类。然而,我对如何将 View 中的信息获取到我的模板中有点迷失。

我的第一次尝试如下

class Menu(generic.ListView):
model = Categories
template_name = 'portfolio/layout.html'
context_object_name = 'category_list'
# def get_queryset(self):
# return Categories.objects.all()

class IndexView(Menu):
template_name = 'portfolio/index.html'

这允许我通过迭代“category_list”来设置layout.html 和我的菜单项。扩展了layout.html的index.html中继承的菜单项

做了更多研究后,我决定提出如下观点:

class MenuView(object):
def get_context_data(self, *args, **kwargs):
context = super(MenuView, self).get_context_data(*args, **kwargs)
context['menu'] = Categories.objects.all()

return context

class LayoutView(generic.TemplateView):
template_name = 'portfolio/layout.html'

我仍在了解它是如何工作的,但根据本教程( https://blog.safaribooksonline.com/2013/10/28/class-based-views-in-django/ )我认为我正在更新 get_context_data 函数以包含我对类别模型的查询。然而,我不知道如何访问上下文['菜单']以显示到我的模板中。

最佳答案

您的 MenuView 类应该是基于类的 View 类之一的子类,而不是 object - 哪一个取决于您期望的行为。如果您只想显示带有上下文信息的模板,则可能是 TemplateView

无论上下文是由功能 View 还是基于类的 View 构建的,访问模板中的上下文变量的方式都是相同的 - 您的类别查询集将以 {{ menu }} 形式提供,或者您可以使用 {% forcategory in menu %} 等进行迭代。

关于python - Django 基于类的 View 和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com