jiamijiang
jiamijiang

Reputation: 95

Unable to pass data to a third form using Flask

I am able to pass data from one html form to a second html page using Flask. But when I try to pass the data from the second html page to a third html page, i get an error:

werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. KeyError: 'binary'

I am basically trying to input binary numbers on the first html page, convert it to a decimal on the second html page, and then convert it to a hexadecimal number on the third page. Here is my Flask code:

from flask import Flask, redirect, url_for, render_template, request

app = Flask(__name__)

@app.route('/', methods=['POST','GET'])
def input_binary():
    if request.method == "POST":
        binary = request.form["binary"]
        return redirect(url_for("show_decimal", bin=binary))
    else:
        return render_template("binary.html")

@app.route('/<bin>', methods=['POST','GET'])
def show_decimal(bin):
    if request.method == "POST":
        decimal = request.form["decimal"]
        return redirect(url_for("show_hex", dec = decimal))
    else:
        decimal = int(bin,2) 
        return render_template("decimal.html", dec=decimal)

@app.route('/<dec>', methods=['POST','GET'])
def show_hex(dec):
    hexadecimal_string = hex(int(dec))
    return render_template("hex.html", hex = hexadecimal_string)

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

It seems like when i click submit on the second page again, it's trying to run the code from the def input_binary function and not the def show_hex function. Maybe it has to do with the submit button on the second page?

This is the html on the second html page:

<body>
    <p>{{dec}}</p>
    <form name="decimalNumber" action="." method="POST">
        <label>Input the decimal number</label>
        <input type="number" name="decimal">
        <input type="submit" value="submit">
    </form>
</body>

Any suggestions?

Upvotes: 0

Views: 153

Answers (1)

KennetsuR
KennetsuR

Reputation: 788

Upvotes: 0

Related Questions