Как вернуть ввод JSON-запроса и использовать его в другой функции? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь настроить своего рода вход в 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_fname и client_lname, чтобы затем использовать их с sendData().Как я могу добиться этого без проблем с Unicode от JSON или передачи переменных?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы можете использовать сессию для хранения переменных, которые вам нужны для доступа к функциям.Добавьте их к логину,

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']))

Надеюсь, что это ответ на ваш вопрос.

0 голосов
/ 06 июня 2018

Я думаю, что вам нужен сеанс, тогда вы можете сделать что-то вроде этого -

@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'])

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...