url_for() 参数在烧瓶中被忽略
url_for() parameter was ignored in flask
我的路由方法是:
@app.route('/movie/')
def movie(page_num=1):
#...detail skipped...
我的模板是:
<li><a href="{{ url_for('movie',page_num=page_num) }}">{{ page_num }}</a></li>
当我点击link时,地址栏显示"127.0.0.1:5000/movie/?page_num=5",但是pagination.page 显示它仍然是第 1 页。
为什么参数被忽略了,我该如何解决?
由于您跳过了函数的代码,所以很难说错在哪里。但我怀疑您只是没有正确捕获 GET 参数。为此,您可以在路由中使用 variable rules 和动态名称组件;或者使用 request.args.get
.
在 URL 中访问提交的参数
这是一个显示这两种方法的最小示例:
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)
我的路由方法是:
@app.route('/movie/')
def movie(page_num=1):
#...detail skipped...
我的模板是:
<li><a href="{{ url_for('movie',page_num=page_num) }}">{{ page_num }}</a></li>
当我点击link时,地址栏显示"127.0.0.1:5000/movie/?page_num=5",但是pagination.page 显示它仍然是第 1 页。
为什么参数被忽略了,我该如何解决?
由于您跳过了函数的代码,所以很难说错在哪里。但我怀疑您只是没有正确捕获 GET 参数。为此,您可以在路由中使用 variable rules 和动态名称组件;或者使用 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)