我有以下问题:用户正在我的网站上学习课程。一门课程由几个章节组成,每章包含几个步骤。如果用户已登录并完成一个步骤,则后端会保存进度。当用户回到站点时,我希望他从他离开的地方继续。为此,我必须将 css 类“活动”添加到相应的导航步骤和每章的内容选项卡中。我的出发点是使用 if 语句测试用户是否已经完成了该步骤。效果很好,但是将 .active 添加到所有尚未完成的步骤中。我只想将它添加到尚未完成的第一步。我实际上已经解决了这个问题,但这是一个相当粗暴的黑客攻击,我必须包括一个允许我在模板中设置变量的自定义模板标签:
{% load custom_tags %}
{% for chapter in chapters %}
<div>
<ul class="unstyled wizard clearfix">
{% set active_wizard_steps = 0 %}
{% for step in chapter.steps.all %}
<li class="{% if not step.read and active_wizard_steps == 0 %}active{% set active_wizard_steps = 1 %}{% endif %}{% if step.read %} finished{% endif %}"></li>
{% endfor %}
</ul>
</div>
{% endfor %}
我知道这也可以通过将列表或字典传递给包含所有活动步骤的模板来完成,然后在模板中测试是否有步骤在该列表中。但这意味着要重写很多视图代码,所以我决定完全在模板中完成。
所以我的问题是:解决这个问题的最佳实践方法是什么?我只是出于好奇而问,因为这个问题实际上很有趣。非常感谢!