Django ifequal和如果Statement Always To the Else标签

时间:2017-11-07 17:19:02

标签: python django tags

我目前正在尝试将产品ID与网址中提供的ID进行比较。但是模板中的if语句总是返回" else"即使测试提供两者都是平等的。

views.py(给出数据)

def editstatus(request, product_id):
    try:
        request.session['user_id']
    except KeyError:
        return redirect("/login")
    products = Product.objects.all()
    context = {
    "product":products,
    "theid" : product_id,
    }
    return render(request, 'posystem/status.html', context)

status.html(无法使用if语句)

{%for product in product%}
              <tbody>
                <tr>
                  <td>{{product.id}}</td>
                  <td>{{theid}}</td>
                  <td>{{product.product_description}}</td>
                  <td>{{product.product_number}}</td>
                  <td>{{product.product_quantity}}</td>
                  <td>{{product.unit_cost}}</td>
                  <td>{{product.final_cost}}</td>
                  <td>{{product.status}}</td>
                  {% ifequal product.id theid %}
                  <h1>hello</h1>
                  {% else %}
                  <h1>hello2</h1>
                  {% endifequal %}

                  {% if theid %}
                    {% if product.id == theid %}
                    <td><select>
                      <option value="5 Votes Needed">5 Votes Needed</option>
                      <option value="Ready to Order">Ready to Order</option>
                      <option value="Needs to Be Signed">Needs to Be Signed</option>
                      <option value="Ordered">Ordered</option>
                      <option value="Recieved">Recieved</option>
                    </select></td>
                    <td><form class="" action="/changestatus/{{product.id}}" method="post">
                      {% csrf_token %}
                      <button type="submit" name="edit">Save</button>
                    </form></td>
                    {% endif %}
                  {% else %}
                  <td><form class="" action="/status/{{product.id}}" method="post">
                    {% csrf_token %}
                    <button type="submit" name="edit">Edit</button>
                  </form></td>
                  {% endif %}

                </tr>
              </tbody>
              {% endfor %}

我很困惑为什么它既不能用于ifequal标签也不能用于普通的if标签。

1 个答案:

答案 0 :(得分:2)

由于product_id来自URL,因此它将是一个字符串,而不是整数。您需要将其转换为整数。

context = {
"product":products,
"theid" : int(product_id),
}

在Python和Django模板语言中,'1'不等于1