在python中寻找更好的处理更新请求的方法

2024-10-02 02:41:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我为我的web服务器创建了一个flask应用程序,其中一个端点是更新contact信息。一个联系人有许多属性,如usernameemailfirst_namelast_name等。我声明以下方法来处理该联系人的更新请求:

def update_contact_with_form(contact_id, id=None, username=None, first_name=None, last_name=None, email=None, password=None, phone=None, user_status=None):
    session = Session()
    try:
        contact = session.query(DBContact).filter(DBContact.id == contact_id).one()
        if username != None:
            contact.username = username
        if first_name != None:
            contact.first_name = first_name
        ...

    except Exception as error:
        print(error)
    finally:
        session.close()
    return abort(400, 'failed to update')

上面的代码工作正常,但我不喜欢的是对照None检查每个值。有没有更好的方法更新实例而不检查每个属性


Tags: 方法namenoneidif属性emailsession
1条回答
网友
1楼 · 发布于 2024-10-02 02:41:02

这样怎么样

def update_contact_with_form(contact_id, **kwargs):
    session = Session()
    try:
        contact = session.query(DBContact).filter(DBContact.id == contact_id).one()
        for k, v in kwargs:
            if v is not None:
                contact.__setattr__(k, v)
    except Exception as error:
        print(error)
    finally:
        session.close()
    return abort(400, 'failed to update')

相关问题 更多 >

    热门问题