首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >相当于使用..。否则作为Django模板语言中的表达式

相当于使用..。否则作为Django模板语言中的表达式
EN

Stack Overflow用户
提问于 2018-02-28 17:01:57
回答 2查看 6.8K关注 0票数 6

在Python中,有两种使用ifelse的方法:或者用于布尔流控制,在这种情况下,它与冒号和缩进一起使用,或者像https://www.pythoncentral.io/one-line-if-statement-in-python-ternary-conditional-operator/中描述的那样作为单行上的表达式。

据我所知,Django模板语言的{% if %} . {% else %} . {% endif %}标记等同于前者。但是,我想知道是否可以以某种方式实现后者来重构下面的代码:

代码语言:javascript
运行
AI代码解释
复制
<form action="" method="post">{% csrf_token %}
    {% for field in form %}
        {% if field.name == "checkin_type" %}
            <div class="auto-submit">
                {{ field.errors }}
                {{ field.label_tag }}
                {{ field }}
            </div>
        {% else %}
            <div>
                {{ field.errors }}
                {{ field.label_tag }}
                {{ field }}
            </div>
        {% endif %}
    {% endfor %}
    <input type="submit" value="Send message" />
</form>

在这里,我遍历表单的字段,并将一个特定的类"auto-submit"添加到特定字段("checkin_type")的封闭<div>元素中。我想按照以下‘伪代码’的思路重构这个代码:

代码语言:javascript
运行
AI代码解释
复制
<form action="" method="post">{% csrf_token %}
    {% for field in form %}
        <div class="{% if field.name=='checkin_type'%}auto-submit{% else %}{% endif %}">
            {{ field.errors }}
            {{ field.label_tag }}
            {{ field }}
        </div>
    {% endfor %}
    <input type="submit" value="Send message" />
</form>

换句话说,我想通过使用if.else语句来减少代码的重复,只在class的定义中使用一种三元操作符。这在DTL中有可能吗?

顺便说一句,如果我尝试用上面的代码加载模板,就会得到一个TemplateSyntaxError

无法解析余数:‘=’checkin_type‘’“来自‘Could d.name=’checkin_type‘”

也许我只需要做正确的引语转义?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-28 18:07:26

它应该是==前后的空格,不需要空的{% else %}块:

代码语言:javascript
运行
AI代码解释
复制
<div class="{% if field.name == 'checkin_type'%}auto-submit{% endif %}">
票数 12
EN

Stack Overflow用户

发布于 2020-09-13 17:10:12

Django有内置标记筛选器yesno

您可以这样使用它:

代码语言:javascript
运行
AI代码解释
复制
<div class="{{ field.name|yesno:"checkin_type,''" }}">

https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#yesno

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49041089

复制
相关文章

相似问题

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