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. Python, for-else, while-else是否造成了语义歧义 ( 增加心智负担 )?2. 网页爬虫 - python爬虫用BeautifulSoup爬取<s>元素并写入字典,但某些div下没有这一元素,导致自动写入下一条,如何解决?3. android - 安卓微信刷卡支付的DEMO4. python - 用ffmpeg采集视频,用terminate没法结束进程5. mysql - 一个sql的问题6. HTML源文件和引用文件在同一个目录里直接写引用文件名为什么还是打不开7. css3 - 新版支付宝 账单页面滑动时月份栏被下一个月给顶上去是什么效果8. 网络爬虫 - python sys 模块 设置编码老是报错9. thinkphp3.2.3对接新版支付宝10. python3.x - python多线程如何修改数据?

网公网安备