Flask WTForms - как пропустить проверку полей в невидимом div? - PullRequest
0 голосов
/ 02 февраля 2019

Я создал WTform в Python Flask, где у меня есть форма доставки.Если платежный адрес клиента отличается от адреса доставки, тогда я включаю div, который содержит поля для платежного адреса.Я делаю прятаться и показывать Div с помощью JQuery.Первоначально у меня были все поля в одной Flaskform, но потом я подумал, что если поместить поля биллинга в отдельную FlaskForm и обработать form.validate_on_submit () отдельно для 2-й формы, тогда я могу пропустить проверку полей в Billing div.Но нет, он все еще выполняет проверку этих полей, и из-за этого я не могу двигаться вперед.Если у пользователя одинаковые адреса, поля для выставления счета будут пустыми и не смогут пройти проверку.Я уверен, что люди, должно быть, столкнулись с этой ситуацией, но я не могу найти никакого ответа относительно этого.Может ли кто-нибудь направить меня?

Я прилагаю код, чтобы объяснить себя.

Мои Forms.py

class DeliveryForm(FlaskForm):

    choices_billadd = [('1', 'Use delivery address'), ('2', 'Add a billing address')]

    addressline1 = StringField('Address Line 1*',
                           validators=[DataRequired(), Length(min=1, max=100)])
    addressline2 = StringField('Address Line 2',
                           validators=[Length(max=100)])
    city = StringField('City*',
                           validators=[DataRequired(), Length(min=2, max=50)])
    postcode = StringField('Postcode*',
                           validators=[DataRequired(), Length(min=2, max=50)])

    billingaddress = SelectField('Billing Address*', choices = choices_billadd, validators = [DataRequired()])
    submit = SubmitField('Submit')

class BillingForm(FlaskForm):
    bill_addressline1 = StringField('Address Line 1*',
                           validators=[DataRequired(), Length(min=1, max=100)])
    bill_addressline2 = StringField('Address Line 2',
                           validators=[Length(max=100)])
    bill_city = StringField('City*',
                           validators=[DataRequired(), Length(min=2, max=50)])
    bill_postcode = StringField('Postcode*',
                           validators=[DataRequired(), Length(min=2, max=50)])
<form method="POST" action="">
                {{ form.csrf_token(id='login_csrf') }}
                <fieldset class="form-group content-section">

                    <div class="row pt-3">
                        <div class="col-6">
                            {{ form.addressline1.label(class="form-control-label") }}
                            {% if form.addressline1.errors %}
                                {{ form.addressline1(class="form-control is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for error in form.addressline1.errors %}
                                        <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                            {% else %}     
                                {{ form.addressline1(class="form-control") }}
                            {% endif %}
                        </div>
                        <div class="col-6">
                            {{ form.addressline2.label(class="form-control-label") }}
                            {% if form.addressline2.errors %}
                                {{ form.addressline2(class="form-control is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for error in form.addressline2.errors %}
                                        <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                            {% else %}     
                                {{ form.addressline2(class="form-control") }}
                            {% endif %}
                        </div>
                    </div>
                    <div class="row pt-3">
                        <div class="col-6">
                            {{ form.city.label(class="form-control-label") }}
                            {% if form.city.errors %}
                                {{ form.city(class="form-control is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for error in form.city.errors %}
                                        <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                            {% else %}     
                                {{ form.city(class="form-control") }}
                            {% endif %}
                        </div>
                        <div class="col-6">
                            {{ form.postcode.label(class="form-control-label") }}
                            {% if form.postcode.errors %}
                                {{ form.postcode(class="form-control is-invalid") }}
                                <div class="invalid-feedback">
                                    {% for error in form.postcode.errors %}
                                        <span>{{ error }}</span>
                                    {% endfor %}
                                </div>
                            {% else %}     
                                {{ form.postcode(class="form-control") }}
                            {% endif %}
                        </div>
                    </div>

                    <div class="row pt-3">
                        <div class="col-12">
                            {{ form.billingaddress.label(class="form-control-label") }}
                            {{ form.billingaddress(class="form-control") }}
                        </div>  
                    </div>
                    <div id="div_billingaddress" class="">
                        <div class="row pt-3">
                            <div class="col-6">
                                {{ form_bill.bill_addressline1.label(class="form-control-label") }}
                                {% if form_bill.bill_addressline1.errors %}
                                    {{ form_bill.bill_addressline1(class="form-control is-invalid") }}
                                    <div class="invalid-feedback">
                                        {% for error in form_bill.bill_addressline1.errors %}
                                            <span>{{ error }}</span>
                                        {% endfor %}
                                    </div>
                                {% else %}     
                                    {{ form_bill.bill_addressline1(class="form-control") }}
                                {% endif %}
                            </div>
                            <div class="col-6">
                                {{ form_bill.bill_addressline2.label(class="form-control-label") }}
                                {% if form_bill.bill_addressline2.errors %}
                                    {{ form_bill.bill_addressline2(class="form-control is-invalid") }}
                                    <div class="invalid-feedback">
                                        {% for error in form_bill.bill_addressline2.errors %}
                                            <span>{{ error }}</span>
                                        {% endfor %}
                                    </div>
                                {% else %}     
                                    {{ form_bill.bill_addressline2(class="form-control") }}
                                {% endif %}
                            </div>
                        </div>
                        <div class="row pt-3">
                            <div class="col-6">
                                {{ form_bill.bill_city.label(class="form-control-label") }}
                                {% if form_bill.bill_city.errors %}
                                    {{ form_bill.bill_city(class="form-control is-invalid") }}
                                    <div class="invalid-feedback">
                                        {% for error in form_bill.bill_city.errors %}
                                            <span>{{ error }}</span>
                                        {% endfor %}
                                    </div>
                                {% else %}     
                                    {{ form_bill.bill_city(class="form-control") }}
                                {% endif %}
                            </div>
                            <div class="col-6">
                                {{ form_bill.bill_postcode.label(class="form-control-label") }}
                                {% if form_bill.bill_postcode.errors %}
                                    {{ form_bill.bill_postcode(class="form-control is-invalid") }}
                                    <div class="invalid-feedback">
                                        {% for error in form_bill.bill_postcode.errors %}
                                            <span>{{ error }}</span>
                                        {% endfor %}
                                    </div>
                                {% else %}     
                                    {{ form_bill.bill_postcode(class="form-control") }}
                                {% endif %}
                            </div>
                        </div>
                    </div>
                </fieldset>
                <div class="row py-4">
                    <div class="col-12">
                        {{ form.submit(class="btn btn-success btn-block") }}
                    </div>
                </div>
            </form>
...