正确的Url生成瓶

时间:2014-08-16 10:47:56

标签: python flask

我有一个烧瓶应用程序,其中有一个带有表单的模板。它包含2个选项以及用户提交时。它会生成一个像

这样的网址
http://127.0.0.1:5000/search/?code=L00&option=cin

所以我得到这两个值:

ta = request.args.get('code', "", type=str)
tb = request.args.get('option', "", type=str)

现在对它进行了一些处理。我生成了结果。有很多结果,所以我应用了分页。问题是我如何形成网址?

@app.route('/search/', defaults={'page': 1})
@app.route('/search/page/<int:page>')
def search(page):
    ta = request.args.get('code', "", type=str)
    tb = request.args.get('option', "", type=str)
    ***some processing ***

这不会起作用,因为'/search/page/<int:page>'这是不对的。我需要这样的东西 '/search/?code=L00&option=cin/page/<int:page>' 现在我怎么得到这个? 我在测试时也试过这个:

with app.test_request_context():
    print url_for('search',code='L00',option='cin',page=3)

但它会生成/searcht/page/3?code=L00&option=cin

2 个答案:

答案 0 :(得分:2)

你为什么不做这样的事?

@app.route('/search'
def search():
    tp = request.args.get('page', 1, type=int)
    ta = request.args.get('code', "", type=str)
    tb = request.args.get('option', "", type=str)
    ***some processing ***

页面是一个网址参数,您只需将默认值定义为1.然后您的url_for将生成正确的网址,如

/search?code=L00&option=cin&page=3

答案 1 :(得分:0)

我认为您有两个选择:使用以下方法定义您想要的页面:

'/search/page/<int:page>'

或将您想要的页面定义为另一个查询arg,就像您使用'code'和'option'一样。为什么这两种选择都不适合你呢?

此外,如果你包含一个你最终想要生成的URL的例子,它会有所帮助......我不确定你对此代码的期望是什么:

'/search/?code=L00&option=cin/page/<int:page>'
相关问题