Я создаю приложение для входа, используя Flask - mysql.
from flask import Flask, jsonify, request, json
from flask_mysqldb import MySQL
from datetime import datetime
from flask_cors import CORS
from flask_bcrypt import Bcrypt
from flask_jwt_extended import JWTManager
from flask_jwt_extended import (create_access_token, create_refresh_token, jwt_required, jwt_refresh_token_required, get_jwt_identity, get_raw_jwt)
import yaml
app = Flask(__name__)
alogin = yaml.load(open('alogin.yaml'))
app.config['MYSQL_HOST']= alogin['mysql_host']
app.config['MYSQL_USER']= alogin['mysql_user']
app.config['MYSQL_PASSWORD']= alogin['mysql_password']
app.config['MYSQL_DB']= alogin['mysql_db']
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'
app.config['JWT_SECRET_KEY'] = 'secret'
mysql = MySQL(app)
bcrypt = Bcrypt(app)
jwt = JWTManager(app)
CORS(app)
@app.route('/alogin', methods=['POST'])
def login():
cur = mysql.connection.cursor()
email = request.get_json()['email']
password = request.get_json()['password']
result = ""
cur.execute("SELECT * FROM admin where email = '" + str(email) + "'")
rv = cur.fetchone()
if bcrypt.check_password_hash(rv['password'], password):
access_token = create_access_token(identity = {'id':rv['id'],'email': rv['email']})
result = jsonify({"token":access_token})
else:
result = jsonify({"error":"Invalid username and password"})
return result
if __name__ == '__main__':
app.run(debug=True)
Я получаю следующее сообщение об ошибке:
if bcrypt.check_password_hash(rv['password'], password):
TypeError: 'NoneType' object is not subscriptable
Я пробовал использовать ' force = True 'in
email = request.get_json(force = True)['email']
password = request.get_json(force = True)['password']
Тем не менее, он выдает ту же ошибку. Это мое первое приложение с flask. Помощь будет принята с благодарностью.
PS: admin - это имя таблицы в базе данных, и я уже создал ее в базе данных mysql.