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 - requestAnimationFrame如何控制帧速?2. javascript - react 中绑定事件和阻止事件冒泡3. java - .jsp页面用<%= %>的方式获取数据存在一个很奇怪的问题4. 一道使用算法解决的java题(关于hashmap的问题)5. javascript - 百度链接尾部的这个参数是干嘛的?6. node.js - Nodejs微信开发,视频上传成功,但是不返回给用户7. mysql - 这条sql可以怎么优化,求帮助8. mysql索引的疑问9. 热切期待朱老师的回复,网页视频在线播放器插件配置错误10. 老师,请问下为什么这个地方的单引号里面的变量能够被解析呢?

网公网安备