Django检查表单输入字段是否为空

时间:2019-10-31 18:42:36

标签: python html django forms templates

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

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

这是我尝试执行的操作:

<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>

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

我是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'] 祝你好运