gpt4 book ai didi

python - Flask-Restful 可以接受不区分大小写的参数名称吗?

转载 作者:行者123 更新时间:2023-11-30 22:57:18 25 4
gpt4 key购买 nike

如果我使用 Flask-Restful 执行此操作:

parser = reqparse.RequestParser()
parser.add_argument('group', type=str, help='Please specify a valid group')

那么解析器将接受 group=X 参数,但不接受 Group=XGROUP=X

有没有办法让它在获取参数名称时不区分大小写?

(reqparse.Argument 类有一个名为 case_sensitive 的参数,但不幸的是,这只会使不区分大小写(通过将它们设为小写) .它不影响参数名称。

最佳答案

将不同的 Argument 类传递给 RequestParser,将参数包装在不区分大小写的 MultiDict 子类中。

class CaseInsensitiveMultiDict(MultiDict):
def __init__(self, mapping=None):
super().__init__(mapping)
# map lowercase keys to the real keys
self.lower_key_map = {key.lower(): key for key in self}

def __contains__(self, key):
return key.lower() in self.lower_key_map

def getlist(self, key):
return super().getlist(self.lower_key_map.get(key.lower()))

def pop(self, key):
return super().pop(self.lower_key_map.get(key.lower()))


class CaseInsensitiveArgument(Argument):
def source(self, request):
return CaseInsensitiveMultiDict(super().source(request))

parser = RequestParser(argument_class=CaseInsensitiveArgument)

您仍然可以通过将 Argument 实例而不是关键字传递给 add_argument 来获得区分大小写的参数。

MultiDict 子类实现的功能足以满足解析器用例的大小写不敏感,它不适合作为通用实现。

关于python - Flask-Restful 可以接受不区分大小写的参数名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com