如何在Django star ratings中仅显示星级,按需隐藏附加信息?
解决django-star ratings列表页隐藏附加信息的问题
我之前也碰到过一模一样的需求,其实不用愁,django-star ratings有两种简单的实现方式,帮你在列表页只显示星级、详情页保留完整信息:
方法一:自定义模板(推荐,后端控制渲染)
django-star ratings的默认模板包含了那些附加信息,我们可以自定义一个精简版模板,只保留星级部分:
- 在你的项目根目录的
templates文件夹下,新建star_ratings子文件夹(Django会优先加载项目内的模板,而非第三方包的) - 找到django-star ratings包中的默认
widget.html模板(一般在site-packages/star_ratings/templates/star_ratings/路径下),把它复制到你刚创建的star_ratings文件夹里 - 复制后的文件重命名为
widget_minimal.html,然后删掉里面显示附加信息的代码块(就是包含"Average: ..."、"Rating Count: ..."的那部分HTML),只保留星级评分的核心代码 - 在商品列表页的模板里,指定使用这个精简模板:
{% ratings object 18 18 template_name='star_ratings/widget_minimal.html' %} - 商品详情页依旧使用原来的标签即可:
{% ratings object 18 18 %}
方法二:CSS前端隐藏(快速实现)
如果不想折腾模板,也可以用CSS直接隐藏附加信息,仅在列表页生效:
在列表页的样式文件中添加:
/* 隐藏星级下方的附加信息 */ .star-ratings__info { display: none; }
这种方法是前端层面隐藏,后端还是会渲染这些内容,如果对页面性能有要求,更推荐第一种方法。
注意:自定义模板时,别误删了星级评分的交互逻辑(比如点击评分的JS代码和相关DOM结构),不然会导致评分功能失效哦~
内容的提问来源于stack exchange,提问作者Pankaj Sharma
相关产品推荐
相关产品推荐

