我希望有可重复使用的评级(典型的5星级布局)。 我发现这个http://www.thebroth.com/blog/119/css-rating-stars解释了如何使用css显示它。 为了实际收集评级我正在考虑使用图像映射或简单的单选按钮。 我想在各种不同的模型上使用它。
你会怎么做? 我可以创建一个小部件,还是可以使用模板执行此操作? 实际上我很惊讶没有在网上找到任何东西。它是那么简单,还是不常见?
答案 0 :(得分:5)
如果在django-users mailing list上收到了一些有趣的答案:
迈克:你可以创建一个小部件,我自己喜欢单独的评级模型。那 收集值,然后将其添加到总计并创建分数或 平均。该模型存储了总分数和总分数 得到我的平均值,(我在视图中做数学)。将其添加到其他模型 与外键关系。强制用户只投票一次很少 在当前会话或cookie生存期之外强制执行。如果你想要的话 坚持不懈,我不知道什么是最好的 这个,但只需要注册用户投票。 现在,您只需显示评级表单,我会将其作为模板包含 标记并将标记放入我的模板中。这个标签有基本的提交表格, 形成它的自我是两个领域,有一个选择框(我这样简单)和一个 隐藏字段标记为下一个指向此页面,我可以重定向 至。当用户提交时,在我的视图中处理表单操作,我只是 增加投票和总分并重定向回投票的页面 采取。这是使用传统的提交按钮,将表单发布到 网址,返回完整视图。 如果你用javascript做一些事情来照亮星星的数量 评级并点击要提交的星标,在这里您可能希望将其发布为 使用xhr请求的json对象,更新视图并返回一个json对象 更新的评级值,如果是200,则使用新值更新页面 投票后(以200返回)。如果它是500,处理错误, 让用户知道,投票和重置星星有问题。 如果有人有更好的想法,这就是我所做的,或者你会做的事情, 请大声说出来。 希望这可以帮助。 迈克
by Ethan:
我实际上只对我正在进行的项目进行了5星评级 一直试图弄清楚我是否有任何可重复使用的值得发布的 包(并试图找到时间来弄清楚..)我将概述 我做了什么以及我曾经做过什么。 我使用django-ratings [1,2]作为后端,并将其RatingField连接到 我的应付价格型号。 我喜欢jQuery,所以对于前端我使用了jquery-star-rating插件[3,4] 作为基础。它将一组单选按钮变成一个星形小部件。一世 没有密切关注实施,但我认为这基本上是 使用链接中描述的相同CSS技术。开始吧 只需要包含它的JS和CSS并将class =“star”添加到收音机中 表单中的按钮。 然后我写了一些从收音机发送请求数据的视图代码 django-ratings的按钮。超级简单的东西,只是使用了django评级 RatingManager API并处理它抛出的异常 - 我已粘贴了 [5]我的代码片段。 (我使用的是旧版本 django-ratings b / c我没有时间升级;它可能看起来有点 现在不一样了,我不确定。) 最后,我还想要两件事: 1)如果用户已经对项目进行了评级并查看“评价此项目”表格 再次,“星形小部件”应该预设用户以前的评级, 而不只是显示五个空白的星星。我意识到最简单的方法 这是来自客户端:模拟用户的onload事件 点击他已点击的星星。我的视图和模板代码 那是[6];我只是想出了jquery-star-rating的HTML格式 设置并期望,并点击用户的相应星号 现有评级。 2)查看项目时,用户的评分应显示为非交互式 明星,而不是数字。我写了一个愚蠢的指甲模板过滤器 旨在取一个数字(评级)并返回一堆星图。 我再次使用了HTML格式和CSS类 jQuery的星级评定。我的代码是[7]。 我认为把它中的一些放在一个django形式的字段中是很好的 渲染单选按钮并一次性触发jquery-star-rating,和 处理提交给django-ratings后端的提交。但我还没有 有机会想出来。 无论如何,希望这有帮助, 阮经天 1 http://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
答案 1 :(得分:2)
PyPi上有一个django-ratings个应用。它可以给你评分为'myinstance.rating.get_percent()'的百分比,在你的模板中用于你提到的CSS技巧中的内部div宽度。