烧瓶分页,如何使用wtforms发布所有数据

时间:2018-07-24 13:10:17

标签: flask pagination

我有一组数据,我在烧瓶中使用分页,就像这样获得的

rows = TxfNews.query.filter(
    TxfNews.reported == 0

).order_by(TxfNews.date.desc()).paginate(page=page, per_page=10)

这将我的页面定为每页10个项目。这可以正常工作,并显示带有分页链接的正确形式。我的表单是使用flask-wtforms动态分配的。下面是它的摘录。

            <tbody>
                {% for x in data.items %}
                <tr>
                    {% for subfield in form['article|'~x.id ] %}
                    <td>{{ subfield }}</td>

                    {% endfor %}
                    <td>{{ x.info }}</td>
                    <td>{{ x.date.strftime('%d/%m/%Y') }}</td>
                    <td>
                        <a href={{ x.link }} target="_blank">
                            More Details
                        </a>
                    </td>
                </tr>

                {% endfor %}

            </tbody>
        </table>

    </div>
    <button class="btn btn-info" name="SaveAll" type="submit">Save All</button>

    {% for page_num in data.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=3) %}
        {% if page_num %}
            {% if data.page == page_num %}
                <a class="btn btn-info mb-4"  href="{{ url_for('txf_news', page=page_num) }}">{{ page_num }}</a>
            {% else %}
                <a class="btn btn-outline mb-4" href="{{ url_for('txf_news', page=page_num) }}">{{ page_num }}</a>
            {% endif %}
        {% else %}
            ...
        {% endif %}
    {% endfor %}

也可以看出我的分页符在那里。我得到的错误是,例如,当我在第1页上选择一个单选按钮然后更改为第3页时,它忘记了第1页的状态。我认为这取决于我的代码是否没有任何内容处理页码更改时的获取路由。但是我不确定如何弥补这一点,我应该使用ajax吗?还是在视图本身中处理它?<​​/ p>

我已经仔细阅读了this,这使我认为我需要将分页放在表单中,或者在单击分页链接时将我当前的表单状态作为变量发送,但是我仍然不正确错误。

以下是我的查看代码;

@app.route('/txfnews', methods=['GET', 'POST'])
@login_required
def txf_news():

    page = request.args.get('page', 1, type=int)
    rows = txf_query(page)

    form = TxfNewsForm()

    if form.validate_on_submit:

        if 'userId' in session and 'SaveAll' in request.form:

            #do something


    return render_template('txf_news.html', form=form, data=rows)

0 个答案:

没有答案