【问题标题】:Regular expression in flask urls [duplicate]烧瓶网址中的正则表达式[重复]
【发布时间】:2016-11-14 07:20:46
【问题描述】:

我想用正则表达式在烧瓶中写一些网址。我把它们放在 django 中是这样的

r'^v1/$'
r'^v1/(.+/)$'

我想在烧瓶中重新创建它们

我试过了

class RegexConverter(BaseConverter):
    def __init__(self, url_map, *items):
        super(RegexConverter, self).__init__(url_map)
        self.regex = items[0]
app.url_map.converters['regex'] = RegexConverter

api.add_resource(Handler1,'/<regex("^v1/$")>')
api.add_resource(Handler2,'/<regex("^v1/(.+/)$")>')

但它不起作用。 显示错误

ValueError: malformed url rule: '/<regex("^v1/$")>'

【问题讨论】:

标签: python regex flask flask-restful


【解决方案1】:

您没有提供url_map 规则值。应该是:

class RegexConverter(BaseConverter):
    def __init__(self, url_map, *items):
        super(RegexConverter, self).__init__(url_map)
        self.regex = items[0]
app.url_map.converters['regex'] = RegexConverter

api.add_resource(Handler1,'/<regex("^v1/$"):just_v1>')
api.add_resource(Handler2,'/<regex("^v1/(.+/)$"):v1_plus>')

并且,在您的实际处理程序中(此处为 Handler1Handler2);您将收到这些映射值作为参数:

class Handler1(Resource):
    def get(self, just_v1):
        # you'll receive `v1/` as the value for `just_v1`

【讨论】:

  • 仍然不能为 url 工作:localhost:6000/v1/
  • @sarvesh 可能会在问题中使用处理程序、api/app 对象初始化等添加更多代码?
  • 与您编写的代码相同。从正则表达式中删除 ^ 的另一件事正在发挥作用
猜你喜欢
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 2018-03-18
  • 2016-04-02
  • 2018-08-02
  • 2015-04-11
  • 1970-01-01
  • 2013-05-05
相关资源
最近更新 更多