【问题标题】:Django Client Side FilteringDjango 客户端过滤
【发布时间】:2014-09-18 12:04:56
【问题描述】:

我对 Django 还是很陌生,我正在一个网站上工作,我希望用户能够根据对象的时间戳过滤掉对象。我可以轻松地在 views.py 中进行过滤并重新加载模板,但是我应该如何在客户端进行过滤呢?

只加载所有内容会不会是个好主意:

{% for obj in all_objects %}
    <p>{{obj.time}}</p>
{% endfor %}

然后使用javascript隐藏和显示相关对象?我预计不会超过 1,000 个对象。

我看过这个: http://dustindavis.me/dynamic-filtered-drop-down-choice-fields-with-django.html 并且作者说他会使用 AngularJS 而不是自定义的 AJAX 解决方案。

Angular 是我的最佳选择,还是有其他更容易与 Django 集成的框架?

【问题讨论】:

    标签: javascript ajax django angularjs django-templates


    【解决方案1】:

    您不需要一个完整的框架(例如 Angular)来过滤您的结果,尽管我肯定会推荐使用流行的 MVC 框架之一。 但是,如果您走这条路,您将显着改变您的 django 应用程序的架构,因为 Angular 等确实​​是为单页应用程序构建的,如果您的 django 项目公开 API 而不是呈现 HTML,它将最适合您。

    话虽如此,为了解决您的问题,我将继续使用相同的 django 模板,并将列表的内容加载到隐藏的 HTML 元素中。 然后在您页面的 Javascript 代码中,您可以根据用户选择从列表中提取相关项目。不过,该代码将完全是 Javascript。

    作为提示,我将使用 django 模板将过滤参数作为隐藏 HTML 标记的数据属性插入。一个例子:

    {% for obj in all_objects %}
        <p data-time='{{obj.time}}' data-somefilter='{{obj.somefiter}}'>{{obj.time}}</p>
    {% endfor %}
    

    这样,您可以轻松地使用 Jquery 选择器根据需求过滤数据,然后将结果复制到显示过滤列表的可见 HTML 部分

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 1970-01-01
      • 2010-12-21
      • 2012-12-21
      • 2017-01-25
      • 2016-01-28
      • 2021-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多