在烧瓶中,如何查询数据使用选择字段作为条件并使用分页显示

时间:2017-03-31 15:40:57

标签: python-2.7 flask flask-sqlalchemy

我想查询数据,使用selectfield作为条件,然后在html中显示结果并使用paginage。 我的问题是当我显示我的数据时,第一个可以正常显示但是当我点击next_page时,selectfield是none,数据无法显示。 单击next_page时,我该怎么做才能保留selectfield?

1 个答案:

答案 0 :(得分:0)

您的视图应接受一个整数以允许传递当前数据。以下是一个例子:

@app.route('/view/<int:page>',methods=['GET'])
def view(page=1):
  if request.method == 'POST':
    select = int(request.form.get('select'))
    print(select)
  per_page = 2
  try:
    users = User.query.order_by(User.email.asc()).paginate(select,
                                                           per_page=per_page,
                                                           error_out=False)
  except NameError: 
    users = User.query.order_by(User.email.asc()).paginate(page,
                                                           per_page=per_page,
                                                           error_out=False)
  return render_template('view.html',users=users)

视图看起来像这样:

<html>
  <head>Welcome</head>
  <body>
<form method="POST" action="{{ url_for('view', page=users.prev_num + 1) }}">
  <div>
    <div>
       <span>Please select</span>
        <select name="select">
          {% for user in users.items %}
            <option value="{{ user.id }}">{{ user.username }}</option>
          {% endfor %}
        </select>
    </div>
    <button type="submit">Go</button>
  </div>
</form>
{% if users.has_prev %}<a href="{{ url_for('view', page=users.prev_num) }}">&lt;&lt; Newer users</a>{% else %}&lt;&lt; Newer posts{% endif %} | 
{% if users.has_next %}<a href="{{ url_for('view', page=users.next_num) }}">Older users &gt;&gt;</a>{% else %}Older posts &gt;&gt;{% endif %}

  </body>
</html>