亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 webargs 從查詢參數中按值解析枚舉?

如何使用 webargs 從查詢參數中按值解析枚舉?

楊__羊羊 2023-09-26 16:52:15
我有下一個枚舉:class EStatus(enum.IntEnum):    NEW = 0    MODIFIED = 1和架構:ARGS = {    'status': EnumField(EStatus, by_value=True, required=False)}在 Flask 中我聲明了 GET 方法webargs:@use_args(ARGS, location='query')def get(self, args: Dict[str, any]):    return []它失敗并出現錯誤:{'messages': {'query': {'status': ['Invalid enum value 1']}}, 'schema': <GeneratedSchema(many=False)>, 'headers': None}我在調試器中檢查過它,發現EnumField調用了EStatus(value). 問題是我的值是str類型,因為它來自查詢參數。如何在通話之前將EnumField其投射到?intEStatus(value)
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

class EStatus(enum.IntEnum):

    NEW = 0

    MODIFIED = 1


  @staticmethod

    def from_str(e_status: str):

        e_status = e_status.upper()

        if e_status in EStatus.__members__:

            return EStatus[e_status]

        else:

            raise ValueError(f'{e_status} is not a valid EStatus.')


#You can use above from_str like below,

EStatus e_status = EStatus.from_str('NEW')

print(e_status.name)

print(e_status.value)

希望對于您的問題,您應該能夠使用 from_str staticmethod 將 str 轉換為 Enum 類型。


查看完整回答
反對 回復 2023-09-26
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號