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