如何在不需要在django中重新发送请求的情况下就地重新排序搜索结果? [关闭]

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

这是场景:

我有一个搜索页面,其中一些表单元素提供了多个过滤条件(类似于“高级搜索”),可能还有一个嵌套的ListView来就地显示搜索结果。我想要实现的目标:

  1. 每当用户更改某些过滤条件时,下面的结果列表会就地响应(可以接受另一个请求);
  2. 当用户更改排序选项时,结果会立即更改其排序,而无需同步或通过ajax发送另一个请求。从服务器端来看,它就像更改QuerySet的order_by属性一样简单,但我希望它以前端方式。

所以我想知道是否有可能实现这一目标。在我看来,过滤后的QuerySet可以以某种方式保存在客户端。

纯Django可以使用像session这样的机制吗?或者它是否必须采用一些前端框架,如AngularJS或Vue.js?或者甚至不可能(如果是这样,是否有任何方法采取最小的额外网络负载?)

javascript python angularjs django web
1个回答
0
投票

假设您的内容使用ng-repeat进行渲染,您可以使用ng-repeat上的orderby过滤器来完成此操作。这是一个简单的jsfiddle,它执行此操作:http://jsfiddle.net/razh/3mwjr/

如果它是一个列表,基本上你需要:

<li ng-repeat = "item in list  | orderBy: expr">{{item.property}} </li>

expr通常是您要排序的属性的名称,存储在控制器属性中。

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