Я пытаюсь создать рейтинг (звезды) в моем приложении.Все мои «рейтинги» отображаются как float
.Я хочу округлить этот рейтинг, чтобы он был целым числом и отображал столько звездочек.Кажется, я не могу понять, как заставить Джинджу понравиться.
Пример рейтинга: 3.0
, 2.3
, 5.0
, 4.6
и т. Д. *
Сбой, потому что с TypeError: 'float' object cannot be interpreted as an integer
{% if book.average_score %}
{% for s in range(book.average_score) %}
<i class="fas fa-star"></i>
{% endfor %}
{% endif %}
Я думал, что смогу просто использовать math
:
{% if book.average_score %}
{% for s in range(math.ceil(book.average_score)) %}
<i class="fas fa-star"></i>
{% endfor %}
{% endif %}
Но это приводит к jinja2.exceptions.UndefinedError: 'math' is undefined
.Я предполагаю, что это потому, что я использую Flask и шаблон не имеет представления о библиотеке math
.
Я тогда играл с round
:
{% if book.average_score %}
{% for s in range(round(book.average_score)) %}
<i class="fas fa-star"></i>
{% endfor %}
{% endif %}
Но затем я получаю jinja2.exceptions.UndefinedError: 'round' is undefined
Я сделал еще несколько вариантов использования round
, следуя документации раунда , но безуспешно.Я знаю в Angular, у вас есть pipes
, которые действительно помогают с такими вещами.У jinja есть что-то похожее, или я просто не в курсе?
Этот поток SOF, кажется, ближе всего подходит к проблеме, которую я пытаюсь решить.Однако, похоже, я не слишком далеко продвинулся.