在Django中,零(整数)是空白还是空?

Beb*_*ebe 0 python django templates

我在输入字段(IntegerField)中尝试了整数零,但是在提交后,该零似乎永远不会显示.

这是我的模板的一部分:

{{user_date_table.june_11}}
{% if not user_date_table.june_11_steps %}
 <form action="/steps_count/index/{{ username }}/table/" method="post">
  {% csrf_token %}              
  <input type="text" autocorrect="off" autocapitalize="off" name="june_11_steps"/>
  <input type="submit" value="Add"/>
 </form>
{% else %}      
 {{user_date_table.june_11_steps}}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我认为if not user_date_table.june_11_steps抛出"True",即如果我使用零作为输入则它是空白的.这是正确的,我可以克服这个吗?

Fal*_*gel 5

在python中,以下所有内容都被评估为False:

'', "", 0, [], {}, (), False, None 
Run Code Online (Sandbox Code Playgroud)

因此,user_date_table.june_11_steps是0,然后{% if not user_date_table.june_11_steps %}将被评估True并且将执行该块.

更新:对于解决方案,

  1. 如果user_date_table在显示表单时没有在您的上下文中进行,或者如果它是空的,则可以使用

    {% if not user_date_table%}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将另一个值传递给模板,例如display_result,并使用它来检查将显示哪个字段集.

views.py:

if request.POST: #saving the post data
    display_result = True
Run Code Online (Sandbox Code Playgroud)

template.html

{% if not display_result %}
    <form action="/steps_count/inde...
Run Code Online (Sandbox Code Playgroud)

但第一种方法总是更好.