django - 如何使用 for 循环动态显示 {% django block %}?
问题描述
你好真棒人!
我正在为我的网站构建一个仪表板,在左侧部分,我有一个包含多个项目的菜单:Home
, Messenger
, Job Offers
...。
创建帐户时,用户可以选择他们的项目、重新订购或删除。
我有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 = ......
对于用户的菜单,我base_template
用 for 循环显示当前用户的项目。使用 CSS 类,我想突出显示当前视图,即当前项目。
当用户访问他的信使时,我想用 CSS 类突出显示该项目信使。
<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
叫 for messengeritem_messenger
时,我会这样做
{% block 'item_messenger' %}active{% endfor%}
它不起作用,Messenger
我选择的项目或任何东西都没有突出显示,我想知道为什么?
还有其他方法可以实现吗?
任何提示都会有所帮助,在此先感谢!
解决方案
您正试图让块标记将变量解释为它的名称。那是行不通的。
您将需要在模板上下文中传递活动项的键,然后在您的中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>
推荐阅读
- flutter - 我想让男孩的内容在颤动中滚动
- ajax - jquery ui draggable droppable 动态问题
- google-apps-script - 如何在 Google 表格中获取多行的注释
- node.js - mongo 中的嵌套字段更新(更新查询中的更新)
- docker - 如何让 OracleDB 与 Express 连接?
- java - Checkstyle-IDEA IntelliJ 插件在应该时没有显示问题
- sql - 如何将 clob 附加到特定位置的 clob?
- c++ - Clang 10 无法在 macOS 10.12 上将 C++ 应用程序与 CMake 链接起来
- python - 我有一个从 .OptionMenu(command=argument) 获取参数的函数,在我分配数据框的函数内部
- sql - 如何计算表示按另一列分组的比例的比率?