Python / Django应用:一个带过滤菜单的酒单.过滤器逻辑应该放在哪里?前端或后端



我创建了一个酒单应用程序,我开始质疑我的设计。首先,如果您看一下下面的views.py代码片段,您会看到一个发送所有活动Wine对象的简单解决方案。但真正的问题是,我如何创建一个过滤器侧菜单?我喜欢用视图来处理所有的逻辑,但对我来说,有一个侧边栏,尤其是ajax,似乎需要相当多的前端代码。

这是一个New Egg过滤器的例子。

我正在寻找如何使用Django创建这样一个侧过滤器菜单的方向。这将主要由前端驱动吗?这可以由视图驱动吗?Django Rest框架的东西我应该检查?

def wine_list(request):
    wines = Wine.active.all()
    return render(request, 'wine/wine_list.html', {'wines': wines})

一个解决方案是使用django表单,所以你的过滤器框将是一个普通的django表单,用户将从这些表单中选择项目,然后点击提交按钮

在视图方法中使用提交的数据为用户生成查询集和呈现模板。(查看django-filters模块,可能会有所帮助(这个解决方案处理服务器端的所有内容)

另一个解决方案是使用rest -你创建一个api端点为葡萄酒Eg /api/wines/,然后在网站,当用户选择一些过滤器你发送一个请求(与jquery,…)获得新的数据,并把它们在结果表,没有重新加载整个页面(这种方法需要一些客户端工作)- (django过滤器可能在这里也有帮助)

根据您的项目需求,您可以选择以下方法中的一种

相关内容

最新更新