Flask возврат неверного значения с радиовходов - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь получить значение, хранящееся внутри входной переменной из формы.

Мой 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 голосов
/ 18 июня 2020

Во-первых, вы должны знать, как правильно отлаживать, чтобы найти причину проблемы.

Если вы включите сетевую отладку (например, проверьте в Chrome, а затем посмотрите на Network tab), вы можете видеть, что данные, передаваемые браузером на сервер:

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

В тегах <input> отсутствует value. Вот почему вы не получаете значение.

...