【问题标题】:Generic view for different models in djangodjango中不同模型的通用视图
【发布时间】:2021-06-27 05:40:45
【问题描述】:

为了总结这个项目,我正在开发一个对电子设备进行分类的网站。每个电子设备都有一个类别(电话、平板电脑、计算机等)、制造商(Apple、Samsung、Dell 等)和设备本身(iPhone 6、iPhone X、Samsung S21 等)。 .).

我有一个用于 3 种不同模型(类别、制造商、设备)的模板,我希望简化目前只是复制和粘贴的视图。

这是当前代码:

@login_required(login_url="/login/")
def show_category(request):
    groups = Category.objects.all()
    return render(request, "groups/group.html", {'group': 'Category', 'groups': groups})


@login_required(login_url="/login/")
def show_manufacturer(request):
    groups = Manufacturer.objects.all()
    return render(request, "groups/group.html", {'group': 'Manufacturer', 'groups': groups})


@login_required(login_url="/login/")
def show_device(request):
    groups = Device.objects.all()
    return render(request, "groups/group.html", {'group': 'Device', 'groups': groups})

此外,我还有一些 POST 函数,它们也是将不同模型的相同函数复制粘贴到同一模板。

我已经能够找到同时为一个模板使用多个模型的示例,但我似乎一辈子都找不到为同一模板使用不同模型的示例。

有人可以将我链接到解释如何完成此操作的示例或文档吗?

我觉得我在阅读文档时遗漏了一些东西,或者我只是不太了解在 Django 中执行它的整个模型、视图、模板方式,因为我觉得这应该是 Django 的全部概念,使用强大的视图和模板以这种方式简化代码。

谢谢!

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    这是基于类的视图大放异彩的一种情况,因为它具有继承的能力。虽然如果你只做三个视图,这可能是矫枉过正

    class GroupListView(LoginRequiredMixin, ListView):
        template_file = 'groups/group.html'
    
        def get_context_data(self, *args, **kwargs):
            data = super().get_context_data(*args, **kwargs)
            data['group'] = self.model._meta.verbose_name
            return data
    
    class ShowCategory(GroupListView):
        model = Category
    
    class ShowManufacturer(GroupListView):
        model = Manufacturer
    
    class ShowDevice(GroupListView):
        model = Device
    

    【讨论】:

      猜你喜欢
      • 2017-12-24
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 2016-07-23
      • 2012-07-08
      • 2010-10-15
      • 2020-08-03
      • 1970-01-01
      相关资源
      最近更新 更多