python - flask中不同路由之間傳遞參數(shù)
問(wèn)題描述
最近用flask開(kāi)發(fā)一個(gè)web應(yīng)用,其中有一個(gè)搜索頁(yè)面和結(jié)果頁(yè)面,搜索頁(yè)面有多個(gè)表單,目前在搜索頁(yè)面的路由函數(shù)中已經(jīng)成功處理這些表單,得到的結(jié)果存儲(chǔ)在了一個(gè)list類型的變量里面,我想將這個(gè)變量傳遞到另一個(gè)頁(yè)面也就是結(jié)果頁(yè)面中,將結(jié)果顯示出來(lái),有什么路由之間傳遞參數(shù)的方法嗎
@app.route(’/search’, methods=[’get’, ’post’]) #這是搜索頁(yè)面def fsearch(): .... if request.method == ’POST’:results = multiselect(request) #這是處理表單的函數(shù),reslults為list類型變量... return render_template('new.html') @app.route(’/result’, methods=[’get’, ’post’]) #這是結(jié)果頁(yè)面def fresult(): ... return render_template('result.html')
問(wèn)題解答
回答1:用個(gè)全局變量
results = None@app.route(’/search’, methods=[’get’, ’post’]) #這是搜索頁(yè)面def fsearch(): .... if request.method == ’POST’:global resultsresults = multiselect(request) #這是處理表單的函數(shù),reslults為list類型變量... return render_template('new.html') @app.route(’/result’, methods=[’get’, ’post’]) #這是結(jié)果頁(yè)面def fresult(): global results print results return render_template('result.html')回答2:
請(qǐng)求直接對(duì)應(yīng)結(jié)果。為什么一個(gè)請(qǐng)求結(jié)束后還要再去做一個(gè)請(qǐng)求得到結(jié)果?
回答3:用redirect函數(shù)return redirect(url_for(’fresult’)),函數(shù)里面就能追加參數(shù)了。
回答4:@app.route(’/search’, methods=[’get’, ’post’]) #這是搜索頁(yè)面def fsearch(): .... if request.method == ’POST’:results = multiselect(request) #這是處理表單的函數(shù),reslults為list類型變量....return return render_template('result.html', results=results) return render_template('new.html')回答5:
為什么一定要用post呢,可以參考我的實(shí)現(xiàn)
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
相關(guān)文章:
1. javascript - 能否讓vue-cli的express修改express重啟服務(wù)2. 解決Android webview設(shè)置cookie和cookie丟失的問(wèn)題3. javascript - gulp打包引入文件路徑在生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境下的切換4. node.js - npm一直提示proxy有問(wèn)題5. python - 我想把下面代碼中的多余空白行去除該怎么做,如何用正則實(shí)現(xiàn)6. PHP單例模式7. 最新版本的微信web開(kāi)發(fā)者工具必須要APPID,會(huì)提供測(cè)試號(hào),但是像你一樣tabBar配置的話不會(huì)顯示首頁(yè)與日志,難道我要下載跟你一樣的版本?8. 網(wǎng)頁(yè)爬蟲 - python爬蟲翻頁(yè)問(wèn)題,請(qǐng)問(wèn)各位大神我這段代碼怎樣翻頁(yè),還有價(jià)格要登陸后才能看到,應(yīng)該怎么解決9. python - tweepy 庫(kù) 連接Twitter API 報(bào)錯(cuò)10. python - 網(wǎng)頁(yè)title中包含換行,如何用正則表達(dá)式提取出來(lái)?
