【问题标题】:Django check if form input field is not emptyDjango检查表单输入字段是否不为空
【发布时间】:2020-02-27 04:14:54
【问题描述】:

我有一个包含一堆字段的表单。这些是产品结帐的所有字段。所以姓名,姓氏,电子邮件,地址,电话等等。然后有一个按钮类型提交,进入下一页。

我想要做的是,如果这些字段中的任何一个为空,则应该有一个红色文字说:“字段为空”,否则它将继续。

这就是我尝试的方式:

<form class="row contact_form" action="{% url 'create-order' %}" method="POST" novalidate="novalidate">
                  {% csrf_token %}  
                  <div class="col-md-6 form-group">
                        <input type="text" class="form-control" name="order-namn" placeholder="Namn">
                    </div>
                    <div class="col-md-6 form-group">
                        <input type="text" class="form-control" name="order-efternamn" placeholder="Efternamn">
                    </div>
                    <div class="col-md-12 form-group">
                        <input type="text" class="form-control" name="order-epost" placeholder="E-post för orderbekräftelse">
                    </div>
                    <div class="col-md-6 form-group">
                        <input type="text" class="form-control"  name="order-adress" placeholder="Adress">
                    </div>





                    <div class="col-md-6 form-group">
                      <input type="text" class="form-control"  name="order-ort" placeholder="Ort">
                  </div>


                    <div class="col-md-6 form-group">
                        <input type="text" class="form-control" name="order-postnummer" placeholder="Postnummer">
                    </div>

                    <div class="col-md-6 form-group">
                        <input type="text" class="form-control" name="order-telefon" placeholder="Telefon">
                    </div>
                    <div class="col-md-2 form-group">
                      <select class="browser-default" name="order-land">
                          <option value="Sverige" selected>Sverige</option>
                        </select>
                  </div>
                  <div class="col-md-2 form-group p_star">
                      <select class="browser-default" name="order-state">
                          <option selected>Län</option>
                          <option value="Blekinge län">Blekinge län</option>
                          <option value="Dalarnas län">Dalarnas län</option>
                          <option value="Gotlands län">Gotlands län</option>
                          <option value="Gävleborgs län">Gävleborgs län</option>
                          <option value="Hallands län">Hallands län</option>
                          <option value="Jämntlands län">Jämntlands län</option>
                          <option value="Jönköpings län">Jönköpings län</option>
                          <option value="Kalmar län">Kalmar län</option>
                          <option value="Kronobergs län">Kronobergs län</option>
                          <option value="Norrbottens län">Norrbottens län</option>
                          <option value="Skåne län">Skåne län</option>
                          <option value="Stockholms län">Stockholms län</option>
                          <option value="Södermanlands län">Södermanlands län</option>
                          <option value="Uppsala län">Uppsala län</option>
                          <option value="Värmlands län">Värmlands län</option>
                          <option value="Västerbottens län">Västerbottens län</option>
                          <option value="Västernorrlands län">Västernorrlands län</option>
                          <option value="Västermanlands län">Västermanlands län</option>
                          <option value="Västra Götalands län">Västra Götalands län</option>
                          <option value="Örebro län">Örebro län</option>
                          <option value="Östergötlands län">Östergötlands län</option>
                        </select>
                  </div>

                    <div class="col-md-12 form-group mb-0">
                        <div class="creat_account">


                        </div>
                        <textarea class="form-control" name="message" id="message" rows="1" placeholder="Information till säljaren (Frivilligt)"></textarea>
                    </div>







            </div>
            <div class="col-lg-4">
                <div class="order_box">
                    <h2>Din Beställning</h2>
                    <ul class="list">
                        <li><a href="#"><h4>Produkt <span>Totalt</span></h4></a></li>



                        {% for item in cartItems %}
                        <li><a href="#">{{ item }} x {{item.quantity}} <span class="last" >{{ item.get_total_item_price }} Kr</span></a></li>
                        {% endfor %}

                    </ul>
                    <ul class="list list_2">
                        <li><a href="#">Frakt <span>Gratis Frakt</span></a></li>
                        <li><a href="#">Totalt <span">{{shopCart.get_total}} Kr</span></a></li>
                    </ul>

                    <div class="payment_item active">


                    </div>
                    <div class="creat_account">

                    </div>
                    <div class="payment_item">
                      <div class="radion_btn">
                          <input type="radio" id="f-option5" name="selector" value="Klarna">
                          <label for="f-option5">Klarna</label>
                          <img src="{% static 'assets/img/product/klarna.png' %}" alt="">
                          <div class="check"></div>
                      </div>
                      <p>Klarna offers flexible payment options that allow customers more freedom to choose when and how to pay for a purchase.</p>
                  </div>
                  <div class="payment_item active">
                      <div class="radion_btn">
                          <input type="radio" id="f-option6" name="selector" value="Kort">
                          <label for="f-option6">Kortbetalning </label>
                          <img src="{% static 'assets/img/product/card.jpg' %}" alt="">
                          <div class="check"></div>
                      </div>
                      <p>Betala med Kort. Alla betalningar går igenom Stripe Secure Checkout.</p>
                  </div>

                    {% if order-namn is None %}
                    <div class="text-center">
                     <button type="submit" class="button button-paypal">Fortsätt till Betalning</button>
                    </div>
                    {% endif %}

                </div>
            </div>
        </div>




    </div>




</div>

【问题讨论】:

  • 为什么不将 HTML 的 required 属性强制添加到您想要的输入字段?它现在不会提交表单并说此字段为必填项。
  • 只说所有输入都需要,无论如何都提交
  • 哦,我明白了,您在表单中提供了novalidate,这就是它会提交的原因

标签: python html django forms templates


【解决方案1】:

在客户端,您可以选择将required 属性添加到HTML 或使用javascript 或jQuery 验证表单。一个简单的例子是if (my_input_object.value.length == 0) { alert("message"); return false; }。但是,为了使您的服务器端更具抵抗力,假设您要检查 &lt;input name="Name"&gt; 是否为空。您可以通过这种方式检查发布请求的有效负载中的每个变量:

if request.POST['Name']:
    news.name = request.POST['Name']
else:
    return render(request, 'template.html', {'ERROR':'Input field is empty'})

然后在您的模板中,您可以捕获{{ ERROR }} 并以您喜欢的任何格式(例如红色、...)呈现它们。

【讨论】:

    【解决方案2】:

    在.html 文件中使用属性required 或使用JavaScript 来验证您的空表单。 那会很方便。

    【讨论】:

      【解决方案3】:

      我是 Django 的初学者,我会尽力在你的例子中帮助你!

      在views.py中写下:

      if request.method == "POST":
          test_empty_order-namn = request.POST['order-namn']
          test_empty_order-efternamn = request.POST['order-efternamn']
          test_empty_order-epost = request.POST['order-epost']
          test_empty_order-adress = request.POST['order-adress']
      
          if testempty_order-namn =="" or test_empty_order-efternamn =="" or test_empty_order-epost=="" or  test_empty_order-adress == "" :
              messages.warning(request,"there is one or more fields are empty!")
              return redirect("your page you want to redirect")
      

      我只想在 request.POST['name_input'] 中说 对于 name_input:它表示您给输入的名称 例如:

      所以这里是: request.POST['order-namn'] 祝你好运

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        相关资源
        最近更新 更多