在路由中传递<value>时如何获得正确的结果 Flask,Python,FlaskForm

问题描述

晚上好

希望你做得很好。

我在路线中经过<?PHP add_action( 'wp_footer','redirect_to_new_page'); function redirect_to_new_page() { ?> <script type="text/javascript"> document.addEventListener( 'wpcf7mailsent',function( event ) { if ( '2023' == event.detail.contactFormId ) { // get email var email = event.detail.inputs.filter(function(item){ return item.name === 'your-email'; })[0].value; location = 'https://app.techinme.com/#/registration?email=' + email; } },false ); </script> <?PHP } 时需要得到正确的结果。

稍后,我将在flask应用程序中连接2个下拉列表(第1个-国家和第2个-特定国家的文件),但在此之前,我需要完成此任务。

app.py:

<value>

index.html:

from flask_wtf import FlaskForm
from wtforms import SelectField
from flask import Flask,render_template,request,jsonify
import os

# create Flask 

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'

germany_cars = ["audi.csv","bmw.csv","mercedes.csv"]
japanese_cars = ["lexus.csv","infiniti.csv","toyota.csv"]
italian_cars = ["ferrari.csv","lamborghini.csv","maserati.csv"]

class Form(FlaskForm):
    country = SelectField('car',choices = [("Germany"),("Japan"),("Italy")])
    file = SelectField("file",choices = [])

@app.route("/",methods = ['GET','POST'])
def index():

    form = Form()
    form.country.choices = [(i) for i in form.country.choices]
    form.file.choices = []

    return render_template("index.html",form=form)

@app.route("/cars/<value>")
def cars(value):
    countries = ["Germany","Japan","Italy"]
    carsArray = []
    for i in countries :
        carsObj = {}
        carsObj["country"] = i
        if i == "Germany":
            carsObj["file"] = germany_cars
            
        elif i == "Japan":
            carsObj["file"] = japanese_cars
            
        else:
            carsObj["file"] = italian_cars
            
        carsArray.append(carsObj)
        if value in countries:
            return jsonify({"Countries": carsArray})
            break
        else:
            return jsonify("")
            break

if __name__ == "__main__":
    app.run(debug = True)

图片

enter image description here

如您所见,我经过意大利,看到了德国的信息。

希望您能提供帮助。

谢谢:)

解决方法

您具有使用此命名约定的文件列表。 CountryName_cars。这个国家名称是您在/ car /路线中传递的值。因此,我以如下方式更改了函数:首先将_cars添加到值中。然后它将检查我们是否有该公司的车。如果是,它将返回汽车清单。

例如,如果您经过德国,则该函数将创建字符串'germany_cars'。然后它将检查我们是否有此列表。我们有此列表,因此它将从列表中获取值。

germany_cars = ["audi.csv","bmw.csv","mercedes.csv"]
japanese_cars = ["lexus.csv","infiniti.csv","toyota.csv"]
italian_cars = ["ferrari.csv","lamborghini.csv","maserati.csv"]


@app.route("/cars/<value>")
def cars(value):
    country_file = value.lower() + '_cars'
    result = {}
    if country_file in globals():
        result['country'] = value
        result['file'] = eval(country_file)
    else:
        result['error'] = 'Country not found'
    return jsonify(result)