我正在编写一个星级评定系统,为了以图形方式计算课程的星级,我使用了以下模板标记:
@register.simple_tag
def get_course_rating(course):
decimal, integer = math.modf(course.get_average_rating())
rating_stars = {
'stars': range(int(integer))
}
if decimal > 0:
rating_stars['star_half_empty'] = True
rating_stars['stars_empty'] = range((5 - int(integer)) - 1)
else:
rating_stars['star_half_empty'] = False
rating_stars['stars_empty'] = range(5 - int(integer))
return rating_stars
通过这种方式,我将星级评定放在HTML中:
{% load course_tags %}
{% get_course_rating course as rating %}
{% for i in rating.stars %}
<i class="icon-star"></i>
{% endfor %}
{% if rating.star_half_empty %}
<i class="icon-star-half-alt"></i>
{% endif %}
{% for i in rating.stars_empty %}
<i class="icon-star-empty"></i>
{% endfor %}
我觉得这样做很乏味,所以我想知道是否有办法改进它? 在HTML的意义上。你知道吗
我用这个html代码约3次,对我来说,这是重复的代码,我不想。。。你知道吗
我突然想到,模板标签返回html代码,但我不知道这是否是一个良好的做法。。。你知道吗
还有更专业的解决方案吗?这对我的学习有很大帮助。。。你知道吗
您可以将此
"start rating html"
作为单独的模板,并将其与自定义inclusion tag一起重用。你知道吗另一个动态性较差的选项-在模板中与include重用。你知道吗
差异nicely described here。你知道吗
相关问题 更多 >
编程相关推荐