werkzeug で ルールコンバータを作る

Werkzeug のルーティングで正規表現を使えるようにするコンバータを作る方法。

# -*- coding: utf-8 -*-
from werkzeug.routing import Map, Rule, BaseConverter

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


url_map = Map(
    [Rule('/<regex(".*$"):route>')],
    converters={'regex': RegexConverter}
)
urls = url_map.bind_to_environ(request.environ)

こんな感じで作る。
# この場合全てに一致するルール