我正在创建一个书店,功能之一是,一旦进入页面,我想对其进行更多过滤,每页仅显示10或20个结果。
<form action="{{ url_for('show_10') }}">
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Show Results
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenu2">
<button class="dropdown-item" value = "{{ request.path }}" type="button">Show 10 </button>
</div>
</div>
</form>
所以我想做的是,如果当前路径是某个路由,即“ / sort_by_rating”,那么它应该转到一个函数,该函数在该搜索中每页只会显示10个结果。
@app.route('/show_10', methods = ['GET', 'POST'])
def show_10():
page = request.args.get('page', 1, type=int)
print(request.data['name'])
if request.method == 'POST':
if "/sort_by_bestseller" in request.form:
books = Book.query.filter(Book.best_seller == True).paginate(page=page, per_page=10)
if "/sort_by_rating" in request.form:
books = Book.query.order_by(Book.rating).paginate(page=page, per_page=10)
if "/sort_by_date" in request.form:
books = Book.query.order_by(Book.date).paginate(page=page, per_page=10)
return render_template('search_by_author.html', books=books)
我对Web开发非常陌生。我不确定我的逻辑是否正确。但是,当我单击该按钮来显示10个结果时,它仅停留在当前页面上,并且未发生任何更改。任何帮助表示赞赏。
答案 0 :(得分:0)
仅当请求为帖子时,您的函数才会显示结果。但是您从未告诉您的表格实际发送帖子。您需要使用method属性来实现:
<form action="{{ url_for('show_10') }}" method="POST">