Python – Übergabe von Parametern zwischen verschiedenen Routen in Flask
PHP中文网
PHP中文网 2017-05-18 10:49:28
0
5
1267

Ich habe kürzlich eine Webanwendung mit Flask entwickelt, die über eine Suchseite und eine Ergebnisseite verfügt. Derzeit wurden diese Formulare in der Routing-Funktion der Suchseite erfolgreich verarbeitet und die Ergebnisse werden gespeichert Eine Variable vom Typ Liste. Ich möchte diese Variable an eine andere Seite, die Ergebnisseite, übergeben und die Ergebnisse anzeigen. Gibt es eine Möglichkeit, Parameter zwischen Routen zu übergeben?

@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")
PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen(5)
淡淡烟草味

用个全局变量

results = None

@app.route('/search', methods=['get', 'post']) #这是搜索页面
def fsearch():
    ....
    if request.method == 'POST':
        global results
        results = 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")
小葫芦

请求直接对应结果。
为什么一个请求结束后还要再去做一个请求得到结果?

淡淡烟草味

用redirect函数
return redirect(url_for('fresult')),函数里面就能追加参数了。

刘奇
@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")
phpcn_u1582

为什么一定要用post呢,可以参考我的实现

class SearchView(MethodView):
    def get(self):
        query_dict = request.data
        page, number = self.page_info
        keyword = 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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage