Flask / Werkzeug имеет феноменальный диспетчер URL-адресов wsgi, который не основан на регулярных выражениях.Например, в Flask:
@myapp.route('/products/<category>/<item>')
def product_page(category, item):
pseudo_sql = select details from category where product_name = item;
return render_template('product_page.html',\
product_details = formatted_db_output)
Это дает вам то, что вы ожидаете, т. Е. http://example.com/products/gucci/handbag;это действительно хороший API.Если вам нужны литералы, это просто:
@myapp.route('/blog/searchtool')
def search_interface():
return some_prestored_string
Обновление: В соответствии с вопросом Мухаммеда, это минимальное wsgi-совместимое приложение с использованием 2 утилит без регулярных выражений из WerkzeugURL, если весь путь просто '/', вы получите приветственное сообщение, в противном случае вы получите URL в обратном направлении:
from werkzeug.routing import Map, Rule
url_map = Map([
Rule('/', endpoint='index'),
Rule('/<everything_else>/', endpoint='xedni'),
])
def application(environ, start_response):
urls = url_map.bind_to_environ(environ)
endpoint, args = urls.match()
start_response('200 OK', [('Content-Type', 'text/plain')])
if endpoint == 'index':
return 'welcome to reverse-a-path'
else:
backwards = environ['PATH_INFO'][::-1]
return backwards
Вы можете развернуть его с помощью Tornado, mod_wsgi и т. д. Конечно, это сложнопревзойти приятные идиомы флаконов и бутылочек или тщательность и качество Werkzeug за пределами Map
и Rule
.