Maison  >  Questions et réponses  >  le corps du texte

python - passage de paramètres entre différentes routes dans Flask

J'ai récemment développé une application Web utilisant flask, qui possède une page de recherche et une page de résultats. La page de recherche comporte plusieurs formulaires. Actuellement, ces formulaires ont été traités avec succès dans la fonction de routage de la page de recherche et les résultats sont stockés dans. une variable de type liste. À l'intérieur, je souhaite transmettre cette variable à une autre page, qui est la page de résultats, et afficher les résultats. Existe-t-il un moyen de transmettre des paramètres entre les itinéraires ?

@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 Il y a quelques jours1229

répondre à tous(5)je répondrai

  • 淡淡烟草味

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

    Utilisez une variable globale

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

    répondre
    0
  • 高洛峰

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

    Les demandes correspondent directement aux résultats.
    Pourquoi devez-vous faire une autre demande pour obtenir le résultat une fois qu'une demande est terminée ?

    répondre
    0
  • 淡淡烟草味

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

    Utilisez la fonction de redirection
    return redirect(url_for('fresult')), et vous pouvez ajouter des paramètres à la fonction.

    répondre
    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")

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:51:28

    Pourquoi devez-vous utiliser post ? Vous pouvez vous référer à mon implémentation

    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)

    démo

    répondre
    0
  • Annulerrépondre