如何使用for循环动态显示{%django block%}?

时间:2018-06-01 13:28:11

标签: django django-templates

Hello Awesome People!

我为我的网站构建了一个信息中心,在左侧部分,我有一个包含多个项目的菜单:{{ method.returnTypeName }}HomeMessenger .... <登记/> 创建帐户时,用户可以选择他们的项目,重新订购或删除。

我有Job Offers&amp; Menu个型号,

Item

对于用户的菜单,在我的class Menu(models.Model): items = models.ManyToManyField('Item',blank=True) class Item(models.Model): name = models.CharField(max_length=100) unique_key = models.CharField(max_length=100,unique=True) url = ...... 中,我使用for循环显示当前用户的项目。对于CSS类,我想突出显示当前视图,即当前项目 当用户访问他的信使时,我想用CSS类突出显示该项信使。

base_template

现在,当我在 <ul> {% for item in user.menu.items.all %} <li class='{% block item.unique_key %}{% endblock %}'> <a href="{{item.url}}"> {{item.name}}</a> </li> {% endfor %} </ul> 时,知道我有一个名为messenger.html的信使unique_key,我做

item_messenger

它没有用,项目{% block 'item_messenger' %}active{% endfor%} 或我选择的任何内容都没有突出显示,我想知道为什么? 还有另一种方法可以实现吗?

任何提示都会有所帮助,提前谢谢!

1 个答案:

答案 0 :(得分:0)

您正在尝试让块标记解释变量作为其名称。这不起作用。

您需要在模板上下文中传递活动项的键,然后在base_template中,您只需执行简单的if语句即可将active类添加到正确的条目。

<ul>
    {% for item in user.menu.items.all %}
        <li class='{% if item.unique_key == active_key %}active{% endif %}'>
            <a href="{{item.url}}"> {{item.name}}</a>
        </li>
    {% endfor %}
</ul>