尝试向root'/'url提供GET参数时,Flask返回404

时间:2018-03-22 07:30:22

标签: python flask

这是我的路线:@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)

对于数据,我只有一个帖子。

2 个答案:

答案 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
#...

然后我自己处理问题,如负页码,在页面中找不到帖子等。