Краткий ответ : Это возможно, если два параметра имеют непересекающийся шаблон.Однако, указав шаблон подстановки (вы не указали конвертер).Это приведет к тому, что весь контент обрабатывается в 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
не включает косую черту, мы знаем, что косая черта действует как четкий разделитель, поскольку в вашем примере она не включена в обе переменные.