我在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
是用户选择的值的无符号整数表示形式(假设9
为1001
)。 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/