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)
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.