Python / Django 应用程序:带有过滤菜单的酒单。过滤逻辑应该去哪里?前端还是后端?
Posted
技术标签:
【中文标题】Python / Django 应用程序:带有过滤菜单的酒单。过滤逻辑应该去哪里?前端还是后端?【英文标题】:Python / Django app: a wine list with filter menu. Where should the filter logic go? Frontend or Backend? 【发布时间】:2016-08-17 13:37:38 【问题描述】:我创建了一个酒单应用程序,但我开始质疑我的设计。首先,如果您查看下面的 views.py sn-p,您会看到一个发送所有活动 Wine 对象的简单解决方案。但真正的问题是,如何创建过滤器侧边菜单?我喜欢为所有逻辑使用视图,但对我来说,似乎有一个侧边栏,尤其是使用 ajax 需要相当多的前端代码。
这里是a New Egg filter example.
我正在寻找有关如何使用 Django 创建这样一个侧面过滤器菜单的方向。这将主要由前端驱动吗?这可以由视图驱动吗?我应该检查一下 Django Rest 框架吗?
def wine_list(request):
wines = Wine.active.all()
return render(request, 'wine/wine_list.html', 'wines': wines)
【问题讨论】:
【参考方案1】:您的问题的一个解决方案是使用 django 表单,因此您的过滤器框将是一个普通的 django 表单,用户将从这些表单中选择项目然后单击提交按钮
在您的视图方法中,您使用提交的数据为用户生成查询集和呈现模板。 (查看可能有用的 django-filters 模块(此解决方案处理服务器端的所有内容)
另一个解决方案是使用 rest - 你为 wine Eg /api/wines/
创建一个 api 端点,然后在网站中,当用户选择一些过滤器时,你发送请求(使用 jquery,...)获取新数据并将它们放入结果表,无需重新加载整个页面(这种方法需要一些客户端工作)-(django-filters 在这里也可能有帮助)
根据您的项目要求,您可以选择这些方法中的一种
【讨论】:
以上是关于Python / Django 应用程序:带有过滤菜单的酒单。过滤逻辑应该去哪里?前端还是后端?的主要内容,如果未能解决你的问题,请参考以下文章