python - passage de paramètres entre différentes routes dans Flask
PHP中文网
PHP中文网 2017-05-18 10:49:28
0
5
1269

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中文网

认证高级PHP讲师

répondre à tous(5)
淡淡烟草味

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")
小葫芦

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 ?

淡淡烟草味

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

刘奇
@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

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal