Flask中的内部重定向

时间:2015-09-12 00:50:26

标签: python flask registration flask-jwt

简而言之:

只使用Flask micro-framework(及其依赖关系),我们可以从一条路线到另一条路线执行 内部重定向 吗?

例如:

  1. 用户将注册表单({1}}和username)提交至password
  2. 如果注册成功,Flask会在内部通过@app.route('/register', methods=['POST'])@app.route('/login', methods['POST'])
  3. username发送HTTP POST
  4. 处理并登录用户
  5. 详细信息:

    我正在使用FlaskFlask-JWT扩展程序构建REST API。更具体地说,我正在实施登录和注册。

    登录工作正常,并返回带有令牌的JSON对象。

    以下是我的(登录)身份验证处理程序(即password(POST请求) - 默认Flask-JWT身份验证URL规则):

    /auth

    成功登录返回:

    @jwt.authentication_handler
    def authenticate(username, password):
        user = User.query.filter_by(username=username).first()
        if user and user.verify_password(password):
            return user
        return None
    

    以下是我的注册路线:

    {
      "token": "<jwt-token>"
    }
    

1 个答案:

答案 0 :(得分:4)

您应该使用Post-Redirect-Get模式。

{
   "error_message" : "This API project is not authorized to use this API. Please ensure that this API is activated in the APIs Console: Learn more: https://code.google.com/apis/console",
   "predictions" : [],
   "status" : "REQUEST_DENIED"
}

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

这会破坏像

这样的东西
from flask import Flask, redirect, request, render_template
app = 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)

修改 我之前没有使用过Flask-JWT,也不知道帖子的要求。但是你可以告诉Flask使用passing the redirect function code=307.使用的当前方法(而不是get请求)重定向。希望能解决您的延期问题。