python - flask中不同路由之间传递参数
问题描述
最近用flask开发一个web应用,其中有一个搜索页面和结果页面,搜索页面有多个表单,目前在搜索页面的路由函数中已经成功处理这些表单,得到的结果存储在了一个list类型的变量里面,我想将这个变量传递到另一个页面也就是结果页面中,将结果显示出来,有什么路由之间传递参数的方法吗
@app.route(’/search’, methods=[’get’, ’post’]) #这是搜索页面def fsearch(): .... if request.method == ’POST’:results = multiselect(request) #这是处理表单的函数,reslults为list类型变量... return render_template('new.html') @app.route(’/result’, methods=[’get’, ’post’]) #这是结果页面def fresult(): ... return render_template('result.html')
问题解答
回答1:用个全局变量
results = None@app.route(’/search’, methods=[’get’, ’post’]) #这是搜索页面def fsearch(): .... if request.method == ’POST’:global resultsresults = multiselect(request) #这是处理表单的函数,reslults为list类型变量... return render_template('new.html') @app.route(’/result’, methods=[’get’, ’post’]) #这是结果页面def fresult(): global results print results return render_template('result.html')回答2:
请求直接对应结果。为什么一个请求结束后还要再去做一个请求得到结果?
回答3:用redirect函数return redirect(url_for(’fresult’)),函数里面就能追加参数了。
回答4:@app.route(’/search’, methods=[’get’, ’post’]) #这是搜索页面def fsearch(): .... if request.method == ’POST’:results = multiselect(request) #这是处理表单的函数,reslults为list类型变量....return return render_template('result.html', results=results) return render_template('new.html')回答5:
为什么一定要用post呢,可以参考我的实现
class SearchView(MethodView): def get(self):query_dict = request.datapage, number = self.page_infokeyword = query_dict.pop(’keyword’, None)include = query_dict.pop(’include’, ’0’)if keyword and len(keyword) >= 2: fields = None if include == ’0’:fields = [’title’, ’content’] elif include == ’1’:fields = [’title’] elif include == ’2’:fields = [’content’] results = Topic.query.msearch(keyword, fields=fields).paginate(page, number, True) data = {’title’: ’Search’, ’results’: results, ’keyword’: keyword} return render_template(’search/result.html’, **data)data = {’title’: ’Search’}return render_template(’search/search.html’, **data)
demo
相关文章:
1. angular.js - ng-include 会缓存html吗?2. 小白问题getDay()3. php - Redis监控工具,大家有推荐的吗?4. chrome - linux系统下如何通过java获取客户端ip和mac地址?5. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?6. 前端 - 在webstrom上pull代码时出现错误?7. css - 手机app中rem的基准值计算错误8. 前端 - flex布局采用space-around这种方法,但是最后一行如何让他左对齐?9. 前端 - 使用两个transtion只有一个生效?10. java - git项目迁移到SVN怎么实现的?哪位大神指点指点

网公网安备