В фляге, возможно ли использовать конвертер URL, не разделяя их, используя косую черту '/'? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть маршрут:

 @app.route("/login/<user>/<timestamp>")
 def user(user, timestamp):. 

Но мне он нужен в этой форме -

 @app.route("/login/<user><timestamp>")
 def user(user, timestamp):.

т.е. без косой черты ('/').

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 18 сентября 2018

Краткий ответ : Это возможно, если два параметра имеют непересекающийся шаблон.Однако, указав шаблон подстановки (вы не указали конвертер).Это приведет к тому, что весь контент обрабатывается в user.При этом желательно иметь четкий разделитель .

. Как указано в документации , вы можете определять переменные, записывая их как HTML-теги, например<var>, вы также можете указать конвертер, например <converter:var>.Если вы не указываете конвертер, предполагается, что параметром является строка, которая может не содержать косую черту.

Однако существуют и другие конвертеры, такие как int, float, path и uuid.

Если шаблоны написаны таким образом, что становится ясно, когда заканчивается первый шаблон, а начинается второй, то с этим можно справиться.Например:

@app.route("/login/<int:day><user>")

может работать, учитывая, что user не может начинаться с цифры, так как здесь, когда последовательность цифр заканчивается, Flask проанализирует параметр <user>.

Однако при написании @app.route("/login/<user><timestamp>") эти два шаблона пересекаются: если у нас нет стратегии синтаксического анализа , любое разбиение может быть допустимым.Поскольку двигатель жадный , если я правильно помню, на практике это приведет к тому, что user принимает все символы, а timestamp - нет.

Поскольку по умолчанию string не включает косую черту, мы знаем, что косая черта действует как четкий разделитель, поскольку в вашем примере она не включена в обе переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...