django - Django模板中的“按位与”

标签 django django-templates

我在Django中使用任意长的BinaryField中的每一个表示一个值列表。在模板中,我想启用与匹配位相对应的复选框。

  {% for element in elements %}
  <li class="list-group-item 
      {% if selected_elements & element.value %} 
          list-group-item-primary active 
      {% endif %}" id="{{ element.value }}">
   {{ element.description }}
  </li>
  {% endfor %}
selected_elements是用户选择的值的无符号整数表示形式(假设91001)。 element.value是几何级数1 2 4 8 ...
因此,请考虑循环内的{% if selected_elements & element.value %}:
1001 & 0001 = True
1001 & 0010 = False
1001 & 0100 = False
1001 & 1000 = True
... all remaining elements => False

但是,访问页面时,&似乎会引起麻烦。

无法解析余数:“&”中的“&”()

有没有办法在Django(1.10)模板中使用按位运算符?

最佳答案

Django模板语言不支持按位运算,但是您可以write a custom filter:

@register.filter
def bitwise_and(value, arg):
    return bool(value & arg)

然后在您的模板中:
{% load bitwise_tags %}
{% if selected_elements|bitwise_and:element.value %}

关于django - Django模板中的“按位与”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313565/

相关文章:

python - 如何从模板调用模型函数?

python - Flask 中的模板标签?可能的?

python - 使用 char 字段或 django-time-zone 字段处理 django 时区?

python - @staff_member_required 正在抛出 "object has no attribute ' 用户'”

python - graphene-django - 如何过滤?

python - 仅当问题存在时才显示问题评论

javascript - AJAX 不适用于 Django 应用程序

python - 我的应用程序的管理模板与内置模板的优先级

python - 什么是 django 请求处理程序回调()

python - 在 Django 中更新 Postgres ArrayField