【问题标题】:Django template tag if doesn't compare as expected如果没有按预期进行比较,则 Django 模板标签
【发布时间】:2020-11-14 14:40:35
【问题描述】:

Django 版本:$ python -m django --version: 3.1.2

我的模板包含这个表单:

        <form method="post">
        {% for samtalepartner in elev %}
            <input type="radio" 
                   name="elev" 
                   id="elev{{ forloop.counter  }}" 
                   value="{{ samtalepartner.id }}">
            <label for="elev{{ forloop.counter  }}">
                {{ samtalepartner.id }}{{ request.POST.elev }} 
                {% if samtalepartner.id == request.POST.elev %}
                <b>{{ samtalepartner.fulde_navn }}</b>
                {% else %}
                {{ samtalepartner.fulde_navn }}
                {% endif %}
            </label>
            <br>
        {% endfor %}
        <input type="submit" value="Fremhæv valgte">
        </form>

当我第一次提交时浏览器显示:

1 Andersine Andersen
2 Sida Dida 

选择#2并再次提交时,我期望,如 @987654324 @:

12 Andersine Andersen
22 <b>Sida Dida </b>

但是,浏览器显示:

12 Andersine Andersen
22 Sida Dida 

怎么两个值不比较,执行{% if %}语句 (而不是{% else %}?

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    问题可能在于request.POST.elevstringsamtalepartner.idint。所以尝试将其转换为string

    {% if samtalepartner.id|slugify == request.POST.elev %}
    

    【讨论】:

    • slugifyfilter 具有将整数转换为字符串的功能的令人惊讶的名称。而Django documentation 并没有明确说明这一点。这解释了为什么我的搜索没有产生结果,@neverwalkaloner 提供了。
    猜你喜欢
    • 2021-01-31
    • 2012-06-23
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多