【问题标题】:How to return a JSON request input and use it in another function?如何返回 JSON 请求输入并在另一个函数中使用它?
【发布时间】:2018-11-15 09:51:59
【问题描述】:

我正在尝试设置一个 API 登录,当登录成功时,它会返回一个 JWT 和与 POST 请求中的登录一起发送的名字/姓氏。我的问题是我想不出一种方法可以将名字/姓氏变量返回到另一个类和函数。这是我的代码:

@app.route('/login', methods=['POST'])
def login():
    if not request.is_json:
        return jsonify({"msg": "Missing JSON in request"}), 400

    username = request.json.get('username', None)
    password = request.json.get('password', None)
    client_fname = request.json.get('Client First Name', None)
    client_lname = request.json.get('Client Last Name', None)
    if not username:
        return jsonify({"msg": "Missing username parameter"}), 400
    if not password:
        return jsonify({"msg": "Missing password parameter"}), 400

    if username != USER_DATA.get(username) and password not in USER_DATA[username]:
        return jsonify({"msg": "Bad username or password"}), 401

    access_token = create_access_token(identity=username)
    return jsonify(access_token=access_token), 200, PrivateResource.sendData(self, client_fname, client_lname)

class PrivateResource(Resource):
    @app.route('/protected', methods=['GET'])
    @jwt_required

    def sendData(self, client_fname, client_lname):
        return mysqldb.addUser("{}".format(client_fname),"{}".format(client_lname))

我想返回client_fnameclient_lname,这样我就可以将它们与sendData() 一起使用。如何在没有来自 json 的 unicode 问题或传递变量的情况下实现这一点?

【问题讨论】:

    标签: python mysql json flask


    【解决方案1】:

    您可以使用 session 来存储您需要跨函数访问的变量。将这些添加到登录,

    session['client_fname'] = request.json.get('Client First Name', None)
    session['client_lname'] = request.json.get('Client Last Name', None)
    

    从 sendData 访问它:

    return mysqldb.addUser("{}".format(session['client_fname']),"{}".format(session['client_lname']))
    

    希望这能回答你的问题。

    【讨论】:

    【解决方案2】:

    我认为你需要的是一个 Session 然后你可以做这样的事情-

    @app.route('/login', methods=['GET', 'POST'])
    def login():
       if request.method == 'POST']
              session['username'] = request.form['user']
              return redirect(url_for('home'))
    

    并且正在回家使用-

    @app.route('/home')
    def home():
        if 'username' in session:
            return render_template("index.html", name=session['username'])
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-02
      • 2017-12-14
      • 2012-12-08
      • 2014-07-05
      • 2022-01-07
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多