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. docker start -a dockername 老是卡住,什么情况?2. 计算机 - 我学习了C语言,数据结构和一点点java基础,想自学C++,请问买什么入门书籍好?3. dockerfile - 我用docker build的时候出现下边问题 麻烦帮我看一下4. 在windows下安装docker Toolbox 启动Docker Quickstart Terminal 失败!5. docker绑定了nginx端口 外部访问不到6. 前端 - css中关于设置透明度的问题,有点混乱7. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?8. macos - mac下docker如何设置代理9. docker-compose 为何找不到配置文件?10. docker 下面创建的IMAGE 他们的 ID 一样?这个是怎么回事????
