【问题标题】:SQLAlchemy Marshmallow returns empty JSON FlaskSQLAlchemy Marshmallow 返回空 JSON Flask
【发布时间】:2021-04-19 13:53:11
【问题描述】:

我正在尝试返回所有用户信息,但每次运行请求时它都会返回一个空的 JSON 对象

我的模型和架​​构:

from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

db = SQLAlchemy()
ma = Marshmallow()


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String(100), unique=True)

    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = password


class UserSchema(ma.Schema):
    class meta:
        fields = ('id', 'name', 'email', 'password')


user_schema = UserSchema()

GET 函数:

@auth.route('/getuser/<id>', methods=['GET'])
def get_user(id):
    password = request.json['password']

    user = User.query.get(id)

    if not user or not bcrypt.checkpw(password.encode('utf-8'), user.password.encode('utf-8')):
        return jsonify({'msg': 'Wrong email or password'})

    result = user_schema.dump(user)

    return result

当用户被添加到数据库时,密码被转换为纯字符串

【问题讨论】:

  • 是否需要在路由中指定idint@auth.route('/getuser/&lt;int:id&gt;', methods=['GET'])
  • 我会添加一个 print(result) 来看看会发生什么。
  • 不需要jsonify(result)吗?
  • 我有一个打印,它也返回为空,将 id 更改为 int 没有帮助。 Jsonify 没有区别。

标签: python flask flask-sqlalchemy marshmallow flask-marshmallow


【解决方案1】:

为了返回特定用户的所有详细信息,您可以使用以下代码:

def get_user(id):
    user = User.query.filter_by(id=id).first()
    if user is not None:
        response = jsonify({'result':user.to_json()})
    else
        response = jsonify({'message': 'cannot find user'}), 404
    return response

分享的代码中有获取JSON格式的用户详细信息的详细信息。

【讨论】:

  • user.to_json() 返回错误。 AttributeError:“用户”对象没有属性“to_json”
  • 您是否尝试过在项目中导入pandas库。 to_json() 是熊猫库函数。
猜你喜欢
  • 2020-07-30
  • 2021-08-04
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2019-04-05
  • 2022-07-03
  • 1970-01-01
相关资源
最近更新 更多