Python / Django应用程序:带有过滤器菜单的酒单。 过滤逻辑应该去哪里? 前端还是后端?

问题描述 投票:0回答:1

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

这是一个新的鸡蛋过滤器示例。

我正在寻找有关如何使用Django创建此类侧面过滤器菜单的方向。 这主要是由前端驱动的吗? 可以由视图驱动吗? 我应该检查Django Rest框架吗?

def wine_list(request):
    wines = Wine.active.all()
    return render(request, 'wine/wine_list.html', {'wines': wines})
python django rest filter views
1个回答
0
投票

解决您问题的一种方法是使用django表单,因此您的过滤器框将是普通的django表单,用户将从这些表单中选择项目,然后单击“提交”按钮

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

另一个解决方案是使用rest-您为wine Eg /api/wines/创建一个api端点,然后在网站中,当用户选择一些过滤器时,您发送请求(使用jquery,...)以获取新数据并将其放入结果中表,而无需重新加载整个页面(此方法需要一些客户端工作)-(django-filters在这里也可能会有所帮助)

根据您的项目要求,您可以选择以下方法之一

© www.soinside.com 2019 - 2024. All rights reserved.