烧瓶从无线电输入返回错误值

时间:2020-06-18 19:57:56

标签: python python-3.x web flask

我正在尝试从表单获取存储在输入变量中的值。

我的html文件如下:

<body topmargin="200">
    <form method="post" action="translation">
        <div align="center">
            <font size="5">ქართული >> ინგლისური</font>
            <input type="radio" name="convert" value="geo">
            <br>
            <font size="5">ინგლისური >> ქართული</font>
            <input type="radio" name="convert" value="eng">
        </div>
        <div align="center">
            <br>
            <input type="text" name="words" size="70">
            <br>
            <br>
            <input type="submit" value="თარგმნა">
        </div>
    </form>
</body>

,这是代码的一部分。在try子句中,我将从单选按钮获取的值存储到变量“ convert”中,并且该值应为“ eng”或“ geo”,但每次都会返回“ on”。我不知道为什么会这样。网站的外观如下:http://hgresa.pythonanywhere.com/

def translation(word):
    try:
        geo_to_eng = list(dictionary.keys())[list(dictionary.values()).index(word)]
        return geo_to_eng
    except ValueError:
        return dictionary[word]

@app.route("/")
def base():
    return render_template("input.html")

@app.route("/translation", methods=["POST"])
def translate():
    word_to_translate = request.form["words"].lower()
    finished = translation(word_to_translate)

    try:
        choice = request.form["convert"]
        render = render_template("results.html", the_word=word_to_translate, translated=finished)
        print(choice)
        if choice == "eng":
            return render
        elif choice == "geo":
            return render

        return render_template("results.html", the_word=word_to_translate, translated=finished)

    except:
        return render_template("results.html", the_word=word_to_translate, translated=finished)

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


我们将不胜感激

1 个答案:

答案 0 :(得分:0)

首先,您应该知道如何正确调试以找出问题的原因。

如果您打开网络调试功能(例如Chrome中的 inspect ,然后查看 Network 标签),则可以看到浏览器将数据传输到服务器是:

convert=on&words=

因此,convert的值为"on"。在Flask中,您无能为力。问题出在HTML中。

然后,如果您查看http://hgresa.pythonanywhere.com/的来源,您会发现它实际上具有以下内容:

        <font size="5">ქართული >> ინგლისური</font>
        <input type="radio" name="convert">
        <br>
        <font size="5">ინგლისური >> ქართული</font>
        <input type="radio" name="convert">

value标记中没有<input>。这就是为什么你没有价值。