首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django `if记事本‘标签

Django `if记事本‘标签
EN

Stack Overflow用户
提问于 2014-06-30 07:42:11
回答 2查看 1.6K关注 0票数 0

我想使用ifnotequal标记来判断变量是否等于某个值。这是代码:

代码语言:javascript
复制
{% ifequal firewall.to_port 22 %} <td>Ssh Service</td>{% endifequal %}
{% ifequal firewall.to_port 80 %} <td>Web Service</td>{% endifequal %}
{% ifequal firewall.to_port 25 %} <td>Mail Service</td>{% endifequal %}
{% ifnotequal firewall.to_port 80 or 22 or 25 %} <td>Unknown Service</td>{% endifnotequal %}

密码是错的。我不知道如何在or标记中使用ifnotequal。我该怎么写这个?非常感谢。

最后,我使用:

代码语言:javascript
复制
{% ifequal firewall.to_port 22 %} <td>Ssh Service(Port 22)</td>{% endifequal %}
{% ifequal firewall.to_port 80 %} <td>Web Service(Port 80)</td>{% endifequal %}
{% ifequal firewall.to_port 25 %} <td>Mail Service(Port 25)</td>{% endifequal %}
{% if firewall.to_port != 25 and firewall.to_port != 22 and firewall.to_port != 80 %}
<td>Unknows Service</td>{% endif %}

这看起来很蠢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-30 07:52:04

一种方法是使用if模板标记而不是ifequal。它可以有多个elif子句,如果没有使用elif子句,则可以使用一个最终的elif子句。例:

代码语言:javascript
复制
{% if firewall.to_port==22 %} <td>Ssh Service</td>
{% elif firewall.to_port==80 %} <td>Web Service</td>
{% elif firewall.to_port==25 %} <td>Mail Service</td>
{% else %} <td>Unknown Service</td>{% endif %}

根据to_port调用的工作方式,您可能需要与字符串而不是整数进行比较。

在查看上面评论中的重复链接时,我看到有人已经建议了这种方法。这不是唯一的选择,但是如果您不想改变视图/模型实例的行为,它就会工作。

票数 2
EN

Stack Overflow用户

发布于 2014-06-30 07:52:52

在将对象发送到模板之前,在视图中这样做对性能来说更容易也更好:

代码语言:javascript
复制
def some_view(request):
    port_names = {22: 'SSH Service', 80: 'Web Service', 25: 'SMTP Service'}

    firewall_objects = Firewall.objects.all()
    object_list = []

    for firewall in firewall_objects:
        object_list.append((firewall,
                            port_names.get(firewall.to_port, 'Unknown Service')))

    return render(request, 'template.html', {'object_list': object_list})

在你的模板中,你的生活很简单:

代码语言:javascript
复制
<ul>
{% for obj, description in object_list %}
    <li>{{ obj.to_port }} - {{ description }}</li>
{% endfor %}
</ul>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24485164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档