POST请求上传到数据库,但未获得自定义响应

时间:2019-12-06 18:08:36

标签: flask flask-sqlalchemy flask-restful

因此,正如标题所示,我能够发送POST请求,并在我的postgresql数据库中(通过pgAdmin客户端)看到正在提交和存储数据,但是在响应中遇到了许多错误输出。这可能与授权有关,因为我之前从未从事过授权工作。这两种错误都会产生500错误的响应,这与我想要的相反。

POST请求如下:

def create():
    """
    Create Student Function
    """
    req_data = request.get_json()
    try:
        data = student_schema.load(req_data)
    except ValidationError as err:
        error = err.messages
        return custom_response(error, 400)

    #check if student exists in db
    student_in_db = Student.get_user_by_email(data.get('email'))
    if student_in_db:
        message = {'error': 'Student already exists, please supply another email address'}
        return custom_response(message, 400)
    student = Student(data)
    student.save()

    ser_data = student_schema.dump(student).data
    token = Auth.generate_token(ser_data.get('id'))

    return custom_response({'jwt_token': token}, 201)

custom_response如下:

def custom_response(res, status_code):
    """
    Custom Response Function
    """
    return Response(
        mimetype="application/json",
        response=json.dumps(res),
        status=status_code
    )

错误1 新条目已存储,但是对服务器的响应仍然是500错误。错误输出是指向的属性错误          ser_data = student_schema.dump(student).data 显然是dict对象,因此没有属性数据。

错误2 电子邮件在我的数据库中被声明为唯一,因此,当尝试使用同一电子邮件创建另一个用户时,我遇到了唯一性约束失败,即使我具有检查学生是否已经进入的内置功能,也会导致500响应。数据库。

1 个答案:

答案 0 :(得分:0)

借助flask_sqlalchemy,我希望看到

db.session.add(student)
db.session.commit()

除非您要这样做

student.save()