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. javascript - 在静态页面上用load 引入的页面文件问题?2. 代理 - 一个nginx需求,访问web服务时,若用户为测试用户则转发到web服务的测试版本3. javascript - webpack打包后的bundlejs文件代码不知道什么意思.4. java后台导出页面到pdf5. java - instance method中 static后的<K>是什么意思?6. css3 - css如何实现素描描边效果7. css - 关于ul的布局8. css - 如何使用 vue transition 实现 ios 按钮一样的平滑切换效果9. javascript - vue组件通过eventBus通信时,报错a.$on is not a function10. html - 哪些情况下float会失效?
