美文网首页
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例子

    样例1 表单类 模板渲染 样例2 forms.py warehouse_ticket_form.html ware...

  • 《Flask Web开发实战》—— 表单

    Flask关于表单处理的部分,使用Flask-WTF库,首先安装 1. 表单的基本处理 Flask中表单的基本处理...

  • 4. 表单

    4.1 HTML表单 先看一个简单的HTML表单 4.2 使用Flask-wtf处理表单 Flask-wtf默认为...

  • Flask Wtf

    Flask Wtf是一个flask的表单插件,主要提供表单后台验证功能并自动为表单附加crsf_token的功能,...

  • Python Web框架 Flask - Flask表单、项目结

    Flask表单 Flask项目开发中针对提交表单的校验,可以使用Flask-WTF扩展库进行快速的字段校验 安装F...

  • 2018-07-12

    flask 添加表单 1.安装Flask-WTF 及其依赖 (venv) $ pip install flask-...

  • flask表单提交和数据库的交互

    flask表单 初始化表单from wtforms import StringField,SubmitField,...

  • Flask Web笔记(四)- 表单

    Web 表单 处理web表单的扩展 Flask-WTF 跨域请求伪造保护(CSRF) Flask-WTF 能保护所...

  • Flask-layer

    flask结合layer实现功能: 前端提交表单后,flask返回一段HTML,用于关闭layer提交后的表单。

  • Flask Web表单验证

    Flask Web表单验证 一、开发准备: 1、安装Flask-WTF扩展: pip install flask-...

网友评论

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

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