Я знаю, что я обманываю, представляя другую библиотеку маршрутизации, поскольку я не использовал Routes
, но вот как это делается с помощью пакета маршрутизации Werkzeug
. Это позволяет вам указать, что данный фрагмент пути является целым числом. Вы также можете реализовать более специализированный «конвертер», унаследовав werkzeug.routing.BaseConverter
, если вы хотите проанализировать что-то более интересное (например, UUID).
Возможно, Routes
имеет аналогичный механизм для специализированных нужд синтаксического анализа пути.
import unittest
from werkzeug.routing import Map, Rule
class RoutingWithInts(unittest.TestCase):
m = Map([Rule('/data/<int:record_locator>', endpoint='data_getter')])
def test_without_leading_zeros(self):
urls = self.m.bind('localhost')
endpoint, urlvars = urls.match('/data/31415')
self.assertEquals({'record_locator': 31415}, urlvars)
def test_with_leading_zeros(self):
urls = self.m.bind('localhost')
endpoint, urlvars = urls.match('/data/000031415')
self.assertEquals({'record_locator': 31415}, urlvars)
unittest.main()