这是我的路线:@app.route('/')
。在其中我使用request.args.get('page')
进行分页。但我遇到的问题是,如果我去浏览器并访问localhost:5000/?page=2
,烧瓶会返回404.这是什么原因?它在localhost:5000
上工作正常,但我想提供一个页面。我该怎么办?
编辑:这是我的路线:
from flaskblog import app
from flaskblog.models import Post # Flask-SQLAlchemy
@app.route('/')
def blog_index():
page_num = int(request.args.get('page', 1))
post_data = Post.query.paginate(per_page=10, page=page_num).items
return render_template('index.html', posts=post_data)
对于数据,我只有一个帖子。
答案 0 :(得分:0)
首先,您将page
作为参数传递到您的路线中;
其次,您的路线不是为处理子序列页面而设计的。
为了使路径能够处理默认的第1页和后续页面,您可以将路径指定为:
@app.route('/', defaults={'page': 1})
@app.route('/page/<int:page>/')
def index(page):
# rest of the code
答案 1 :(得分:0)
我发现了我的错误。在Flask-SQLAlchemy分页中,如果在页面中找不到任何内容,则为abort(404)
。为了防止这种情况发生,我这样做了:
#...
Post.query.paginate(per_page=10, page=page_num, error_out=False).items #the error_out=False part
#...
然后我自己处理问题,如负页码,在页面中找不到帖子等。