Jed*_*edi 2 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 %}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
但是,&访问页面时似乎会造成麻烦.
无法解析余数:'&'来自'&'(<class django.template.exceptions.TemplateSyntaxError'>)
有没有办法在Django(1.10)模板中使用按位运算符?
Django模板语言不支持按位运算,但您可以编写自定义过滤器:
@register.filter
def bitwise_and(value, arg):
return bool(value & arg)
Run Code Online (Sandbox Code Playgroud)
然后在你的模板中:
{% load bitwise_tags %}
{% if selected_elements|bitwise_and:element.value %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
434 次 |
| 最近记录: |