改进了模板标签Djang的功能

2024-04-25 06:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个星级评定系统,为了以图形方式计算课程的星级,我使用了以下模板标记:

@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代码,但我不知道这是否是一个良好的做法。。。你知道吗

还有更专业的解决方案吗?这对我的学习有很大帮助。。。你知道吗


Tags: 代码get方式rangeintegerclassemptyint
1条回答
网友
1楼 · 发布于 2024-04-25 06:13:30

您可以将此"start rating html"作为单独的模板,并将其与自定义inclusion tag一起重用。你知道吗

另一个动态性较差的选项-在模板中与include重用。你知道吗

差异nicely described here。你知道吗

相关问题 更多 >