Internal Redirect in Flask Internal Redirect in Flask flask flask

Internal Redirect in Flask


You should use the Post-Redirect-Get pattern.

from flask import Flask, redirect, request, render_templateapp = Flask("the_flask_module")@app.route('/', methods=["GET", "POST"])def post_redirect_get():    if request.method == "GET":        return render_template("post_redirect_get.html")    else:        # Use said data.        return redirect("target", code=303)@app.route("/target")def target():    return "I'm the redirected function"app.run(host="0.0.0.0", port=5001)

And if you want to pass data to the target function (like that token) you can use the session object to store it

So that would break down something like

@app.route('/register', methods=['PUT'])def register():    username = request.form.get('username')    password = request.form.get('password')    if username is None or password is None:        abort(400)  # missing parameters    user = User.query.filter_by(username=username).first()    if user:        abort(400)  # user exists    else:        user = User(user=user)        user.hash_password(password)        db.session.add(user)        db.session.commit()        # How do we generate a token?        redirect("login_success", code=307)@app.route("login_success", methods=["GET", "POST"])@jwt_required()def login_success():    return "Redirected Success!"

Edit:I haven't used Flask-JWT before and didn't know about the post requirement. But you can tell Flask to redirect with the current method used (rather than a get request) by passing the redirect function code=307.. Hopefully that solves your extended problem.