美文网首页
Flask表单 - Fieldlist例子

Flask表单 - Fieldlist例子

作者: cexpert | 来源:发表于2017-03-05 10:15 被阅读0次

    样例1

    表单类

    class FilterForm(wtf.Form):
        filter_value = wtf.TextField('Value', validators=[validators.Required()])
        filter_operator = wtf.SelectField('Operator', validators=[validators.Required()])
        filter_compare_value=wtf.TextField('Compare Value', validators=[validators.Required()])
    
    
    class RedirectForm(wtf.Form):
        redirect_id = wtf.HiddenField('id')
        redirect_name = wtf.TextField('Name', validators=[validators.Required()])
        redirect_url = wtf.TextField('URL', validators=[validators.Required()])
        redirect_type = wtf.SelectField('Type', validators=[validators.Required()])
        redirect_method = wtf.SelectField('Method', validators=[validators.Required()])
        redirect_active = wtf.BooleanField('Is Active')
        redirect_filters_any = wtf.FieldList(wtf.FormField(FilterForm))
        redirect_filters_all = wtf.FieldList(wtf.FormField(FilterForm))
    

    模板渲染

    {% extends "base.html" %}
    {% set active_page = "endpoints" %}
    {% block tail_script %}
    <script src="/static/js/page/redirects.js"></script>
    {% endblock %}
    {% block content %}
    <div class="row12">
        <div class="span12">
            <ul class="breadcrumb">
                  <li><a href="{{ url_for('list_endpoints') }}">Endpoints</a> <span class="divider">/</span></li>
                  <li><a href="{{ url_for('show_endpoint', id=endpoint_id) }}">{{endpoint_name}}</a> <span class="divider">/</span></li>
                  {% if redirect_id != 'new' %}
                  <li class="active">{{ form.redirect_name.data }}</li>
                  {% else %}
                  <li class="active">New</li>
                  {% endif %}
            </ul>
            <form action="{{ url_for('edit_redirect', endpoint_id=endpoint_id, redirect_id=redirect_id) }}" class="form-horizontal" method="post">
                <legend>General</legend>
                {{ form.hidden_tag() }}
                <div class="control-group {% if form.redirect_name.errors %}error{% endif %}">
                    <div class="control-label">{{ form.redirect_name.label }}</div>
                    <div class="controls">
                        {{ form.redirect_name|safe }}
                        {% if form.redirect_name.errors %}
                        <span class="help-inline">
                             <ul class="errors">
                                {% for error in form.redirect_name.errors %}
                                <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                        </span>
                       {% endif %}
                    </div>
                </div>
                <div class="control-group {% if form.redirect_type.errors %}error{% endif %}">
                    <div class="control-label">{{ form.redirect_type.label }}</div>
                    <div class="controls">
                        {{ form.redirect_type|safe }}
                        {% if form.redirect_type.errors %}
                        <span class="help-inline">
                             <ul class="errors">
                                {% for error in form.redirect_type.errors %}
                                <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                        </span>
                       {% endif %}
                    </div>
                </div>
                <div class="control-group {% if form.redirect_active.errors %}error{% endif %}">
                    <div class="control-label">{{ form.redirect_active.label }}</div>
                    <div class="controls">
                        {{ form.redirect_active|safe }}
                        {% if form.redirect_active.errors %}
                        <span class="help-inline">
                             <ul class="errors">
                                {% for error in form.redirect_active.errors %}
                                <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                        </span>
                       {% endif %}
                    </div>
                </div>
                <div class="control-group {% if form.redirect_method.errors %}error{% endif %}">
                    <div class="control-label">{{ form.redirect_method.label }}</div>
                    <div class="controls">
                        {{ form.redirect_method|safe }}
                        {% if form.redirect_method.errors %}
                        <span class="help-inline">
                             <ul class="errors">
                                {% for error in form.redirect_method.errors %}
                                <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                        </span>
                       {% endif %}
                    </div>
                </div>
                <div class="control-group {% if form.redirect_url.errors %}error{% endif %}">
                    <div class="control-label">{{ form.redirect_url.label }}</div>
                    <div class="controls">
                        {{ form.redirect_url|safe }}
                        {% if form.redirect_url.errors %}
                        <span class="help-inline">
                             <ul class="errors">
                                {% for error in form.redirect_url.errors %}
                                <li>{{ error }}</li>
                                {% endfor %}
                            </ul>
                        </span>
                       {% endif %}
                    </div>
                </div>
                <legend>Meet All Filters <a href="#" class="btn addAllFilter">Add</a></legend>
                <table class="stable-striped" id="all_filter_table">
                    <tbody>
                {% for f in form.redirect_filters_all %}
                    <tr style="vertical-align:top;">
                        <td>    
                            {{ f.filter_value }}
                            {% if f.filter_value.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_value.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td>    
                            {{ f.filter_operator }}
                            {% if f.filter_operator.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_operator.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td>    
                            {{ f.filter_compare_value }}
                            {% if f.filter_compare_value.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_compare_value.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td><a href="#" class="btn remove">Remove</a></td>
                    </tr>
                {% endfor %}
                    </tbody>
                </table>
                <legend>Meet Any Filters <a href="#" class="btn addAnyFilter">Add</a></legend>
                <table class="stable-striped" id="any_filter_table">
                    <tbody>
                {% for f in form.redirect_filters_any %}
                    <tr style="vertical-align:top;">
                        <td>    
                            {{ f.filter_value }}
                            {% if f.filter_value.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_value.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td>    
                            {{ f.filter_operator }}
                            {% if f.filter_operator.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_operator.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td>    
                            {{ f.filter_compare_value }}
                            {% if f.filter_compare_value.errors %}
                            <br>
                            <div class="control-group error">
                                <span class="help-inline">
                                     <ul class="errors">
                                        {% for error in f.filter_compare_value.errors %}
                                        <li>{{ error }}</li>
                                        {% endfor %}
                                    </ul>
                                </span>
                            </div>
                            {% endif %}
                        </td>
                        <td><a href="#" class="btn remove">Remove</a></td>
                    </tr>
                {% endfor %}
                    </tbody>
                </table>
                {% if g.user.user_type == 'admin' %}
                <div class="control-group">
                    <div class="controls">
                        <input class="btn btn-primary" type="submit" value="Save"/>
                        <a href="{{url_for('show_endpoint', id=endpoint_id)}}" class="btn">Cancel</a>
                    </div>
                </div>
                {% endif %}
            </form>
        </div>
    </div>
    {% endblock %}
    

    样例2

    forms.py

    class WarehouseTicketItemForm(Form):
          description = StringField(u'Description', validators=[Required()])
          quantity = IntegerField(u'Quantity', validators=[Required()])
    
    class WarehouseTicketForm(Form):
          spot_id = SelectField(u'Spot', coerce=int)
          items = FieldList(FormField(WarehouseTicketItemForm), min_entries = 3)
    
    

    warehouse_ticket_form.html

    <form action="" method='POST'>
      {{ form.hidden_tag() }}
      {{ form.spot_id }} <br>
      {% for item in form.items %}
        {{ item }}
      {% endfor %}
     <button type="submit" name="button">Save it</button>
    

    warehouse_tickets.py

    @coordinator.route('/warehouses/tickets/update', methods=['GET', 'POST'])
    def update_warehouses_tickets():
        page = dict(title="Warehouse Ticket")
        form = WarehouseTicketForm()
        form.spot_id.choices = [(s.id, s.name) for s in Spot.query.filter_by(status=True)]
        if form.validate_on_submit():
            print form.data
        return render_template('coordinators/warehouses/warehouse_ticket_form.html',
                            page=page, form=form)
    

    相关文章

      网友评论

          本文标题:Flask表单 - Fieldlist例子

          本文链接:https://www.haomeiwen.com/subject/qeysgttx.html