我想查询数据,使用selectfield作为条件,然后在html中显示结果并使用paginage。 我的问题是当我显示我的数据时,第一个可以正常显示但是当我点击next_page时,selectfield是none,数据无法显示。 单击next_page时,我该怎么做才能保留selectfield?
答案 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) }}"><< Newer users</a>{% else %}<< Newer posts{% endif %} |
{% if users.has_next %}<a href="{{ url_for('view', page=users.next_num) }}">Older users >></a>{% else %}Older posts >>{% endif %}
</body>
</html>