Урок 4 - Переменные в маршрутизации
Правила для переменных Вы можете добавлять разделы с переменными в URL-адрес,
помечая разделы при помощи <имя_переменной>
. Затем ваша функция получает
<имя_переменной>
в качестве аргумента. При желании вы можете использовать
конвертер, чтобы указать тип аргумента, например <конвертер:имя_переменной>
.
from markupsafe import escape
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return f'User {escape(username)}'
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return f'Post {post_id}'
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return f'Subpath {escape(subpath)}'
Типы конверторов:
Тип | Описание |
---|---|
string (по умолчанию) |
Принимает любой текст без слэшей (/ ) |
int |
Принимает положительные числа |
float |
Принимает положительные нецелые числа (числа с плавающей точкой) |
path |
строка, но также принимает слэши (/ ) |
uuid |
принимает UUID строки |
Избежание HTML
По умолчанию Flask отправляет ответы в формате HTML. Из-за этого могут случиться нежелательные эффекты с изменениям контента или даже уязвимости в коде.
Для исправления мы можем использовать модуль markupsafe
(устанавливается
вместе с Flask). И его функцию escape
.
from markupsafe import escape
@app.route("/<name>")
def hello(name):
return f"Hello, {escape(name)}!"