0

我的路线方法是:

@app.route('/movie/')
def movie(page_num=1):
#...detail skipped...

我的模板是:

<li><a href="{{ url_for('movie',page_num=page_num) }}">{{ page_num }}</a></li>

当我单击链接时,地址栏显示“127.0.0.1:5000/movie/?page_num=5”,但pagination.page显示它仍然是第 1 页。

为什么该参数被忽略,我该如何解决?

4

1 回答 1

2

由于您跳过了函数的代码,因此很难说出了什么问题。但我怀疑您只是没有正确捕获 GET 参数。为此,您可以在路由中使用带有动态名称组件的变量规则;或访问在 URL 中提交的参数request.args.get

这是一个显示两种方法的最小示例:

from flask import Flask, url_for, request
app = Flask(__name__)

@app.route('/')
def index():
    link = url_for('movie',page_num=5)
    return "<a href='{0}'>Click</a>".format(link)

@app.route('/index2')
def index_get():
    link = url_for('movie_get',page_num=5)
    return "<a href='{0}'>Click</a>".format(link)


@app.route('/movie/<page_num>')
def movie(page_num=1):
    return str(page_num)

@app.route('/movie_get')
def movie_get():
    param = request.args.get('page_num', '1')
    return str(param)

if __name__ == '__main__':
    app.run(debug=True)
于 2016-08-28T09:26:02.273 回答