Heim  >  Fragen und Antworten  >  Hauptteil

Python – Übergabe von Parametern zwischen verschiedenen Routen in Flask

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中文网2711 Tage vor1227

Antworte allen(5)Ich werde antworten

  • 淡淡烟草味

    淡淡烟草味2017-05-18 10:51:28

    用个全局变量

    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")

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-18 10:51:28

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

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-18 10:51:28

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

    Antwort
    0
  • 怪我咯

    怪我咯2017-05-18 10:51:28

    @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")

    Antwort
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:51:28

    为什么一定要用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

    Antwort
    0
  • StornierenAntwort