【问题标题】:Best Practices: How to best implement Rating-Stars in Django Templates [closed]最佳实践:如何在 Django 模板中最好地实现 Rating-Stars [关闭]
【发布时间】:2010-12-11 14:25:31
【问题描述】:

我想要可重复使用的评级(典型的 5 星布局)。 我找到了这个http://www.thebroth.com/blog/119/css-rating-stars,它解释了如何使用 css 显示它。 为了实际收集评分,我正在考虑使用图像地图或简单的单选按钮。 我想在各种不同的模型上使用它。

你会怎么做呢? 我应该创建一个小部件还是可以使用模板来执行此操作? 实际上,我很惊讶在网上找不到任何东西。是这么简单,还是不常见?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    如果在django-users mailing list收到一些有趣的回答:

    迈克:

    你可以创建一个小部件,我自己喜欢单独的评级模型。那 收集该值,然后将其添加到总数中并创建一个分数或 平均的。该模型存储总票数和总分,我将其除以 并得到我的平均值,(我在视图中进行数学计算)。将其添加到其他模型 具有外键关系。很少强制用户只投票一次 在当前会话或 cookie 生命周期之外强制执行。如果你想要的话 坚持,我不是fgv6gw33TT,我肯定不知道什么是最适合的 这个,但只需要注册用户投票。 现在,您只需显示评分表,我会将其作为模板包含 标记并将标记放入我的模板中。这个标签有基本的提交表单, 形成它的自我是两个字段,一个选择框(我这样简单)和一个 标记为 next 的隐藏字段指向此页面,我可以重定向 到。当用户提交时,在我看来要处理表单操作时,我只是 增加投票和总分并重定向回投票所在的页面 承担。这是使用传统的提交按钮,将表单发布到 url,返回完整视图。 如果你用 javascript 做一些事情来照亮星星的数量 评分并点击星星提交,在这里您可能想将其发布为 使用 xhr 请求的 json 对象,更新视图并返回一个 json 对象 更新的评分值,如果是 200,则使用新值更新页面 投票后(返回200)。如果是 500,请处理错误, 让用户知道,投票出现问题并重置星星。 如果有人有更好的想法,这就是我所做的,或者在你的位置上会做的, 请说出来。 希望这可以帮助。 迈克

    伊桑:

    实际上,我刚刚为我正在进行的一个项目获得了 5 星评级,并且获得了 一直试图弄清楚我是否有任何可重复使用的东西值得发布 包(并试图找到时间来解决这个问题..)我将概述 我做了什么,我曾经做过什么。 我使用 django-ratings[1,2] 作为后端并将其 RatingField 连接到 我的评分模型。 我喜欢 jQuery,所以对于前端我使用了 jquery-star-rating 插件[3,4] 作为基础。它将一组单选按钮变成一个星形小部件。一世 没有仔细研究过实现,但我认为基本上是 使用链接中描述的相同 CSS 技术。开始你 只需要包含它的 JS 和 CSS 并添加 class="star" 到收音机 表单中的按钮。 然后我只写了一些从收音机发送请求数据的视图代码 django评级的按钮。超级简单的东西,只用了 django-ratings RatingManager API 并处理了它抛出的异常——我已经粘贴了 sn-p 来自我在 [5] 的代码。 (我使用的是一个有点旧的版本 django-ratings b/c 我还没来得及升级;它可能看起来有点 现在不同了,我不确定。) 最后,我还想要两件事: 1) 如果用户已经评价了一个项目并查看了“评价这个项目”表单 再次,“明星小部件”应预设用户之前的评分, 而不是只显示五个空白星。我意识到最简单的方法 这是来自客户端:模拟用户的 onload 事件 点击他已经点击过的星星。我的视图和模板代码 即在 [6];我刚刚弄清楚了 jquery-star-rating 的 HTML 格式 设置和期望,并为用户点击相应的星号 现有评级。 2)查看项目时,用户的评分应显示为非交互式 星星,而不是数字。我写了一个愚蠢的模板过滤器 旨在获取一个数字(评级)并返回一堆明星图像。 同样,我只是使用了 HTML 格式和 CSS 类 jquery 星级评分。我的代码在 [7]。 我在想将其中的一些放在 django-form 字段中会很好 一次性渲染单选按钮并触发 jquery-star-rating,并且 处理提交到 django-ratings 后端。但是我没有 有机会弄清楚这一点。 无论如何,希望这会有所帮助, 伊森 1http://github.com/dcramer/django-ratings [2]http://pypi.python.org/pypi/django-ratings [3]http://www.fyneworks.com/jquery/star-rating/ [4]http://code.google.com/p/jquery-star-rating-plugin/ [5]http://pastebin.ca/1650596 [6]http://pastebin.ca/1650609 [7]http://pastebin.ca/1650616

    【讨论】:

    • 所有引用的 pastebin URL 都损坏了
    【解决方案2】:

    PyPi 上有一个django-ratings 应用程序。它可以为您提供百分比“myinstance.rating.get_percent()”的评分,以在您提到的 CSS 技巧中用于您的模板中的内部 div 宽度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2014-07-05
      • 2012-04-27
      • 2013-10-02
      • 2010-10-06
      • 2011-10-28
      • 2010-09-10
      • 2011-10-11
      相关资源
      最近更新 更多