Техническая причина, по которой вы не можете иметь пользовательские преобразователи URL-адресов в схеме элементов, заключается в том, что в отличие от приложений, в схемах элементов отсутствует сопоставление URL-адресов.
Когда вы используете декоратор route
или метод add_url_map()
схемы, все, что делает схема, — это записывает намерение вызвать версии приложения этих методов позже, когда вызывается register_blueprint()
.
Я не уверен, что есть преимущество в том, чтобы разрешить конвертеры URL-адресов для конкретных чертежей. Но я думаю, что было бы разумно разрешить план установки конвертера для всего приложения. Это может использовать те же методы, что и другие обработчики всего приложения, такие как before_app_request
, например.
def add_app_url_converter(self, name, f):
self.record_once(lambda s: s.app.url_map.converters[name] = f
return f
Blueprint.add_app_url_converter = add_app_url_converter
# ...
bp = Blueprint('mybp', __name__)
bp.add_app_url_converter('list', ListConverter)
person
Miguel
schedule
08.01.2014