English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Правила переменных Flask

URL можно динамически создавать, добавляя переменную части к параметрам правила. Эта переменная часть помечена как <variable-name>. Она передается в виде ключевого параметра функции, связанной с правилом.

В следующем примере параметр правила декоратора route() содержит дополнительную часть переменной URL /hello. Поэтому, если в браузере ввести URL: http://localhost:5000/hello/w3codebox, то 'w3codebox' будет передан в качестве параметра функции hello().

См. следующий код -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/hello/<name>')
 def hello_name(name):
     return 'Hello %s!' % name
 if __name__ == '__main__':
     app.run(debug=True)

Сохраните上面的 скрипт в файл: hello.py и запустите его из Python Shell.

Далее, откройте браузер и введите URL => http://localhost:5000/hello/w3codebox. В браузере будет отображено Hello w3codebox

Кроме стандартной части переменной строки, можно использовать следующие правила конструкторов -

НомерКонвертерОписание
1intпринимает целое число
2floatДля плавающей точки
3путьпринимает символ слэша (/) в качестве разделителя каталога

В следующем коде используются все эти конструкторы.

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/blog/<int:postID>')
 def show_blog(postID):
     return 'Blog Number %d' % postID
 @app.route('/rev/<float:revNo>')
 def revision(revNo):
     return 'Revision Number %f' % revNo
 if __name__ == '__main__':
     app.run()

Запустите вышеуказанный код из Python Shell. В браузере перейдите по URL => http://localhost:5000/blog/11.

Заданная числовая стоимость используется в качестве параметра функции show_blog(). В браузере будет отображен следующий вывод -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
Блог Номер 11

В браузере введите этот URL - http://localhost:5000/rev/1.1

Функция revision() принимает в качестве параметра плавающую точку. Следующие результаты появляются в окне браузера -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
Номер версии 1.100000

URL-правила Flask основаны на модуле маршрутизации Werkzeug. Это гарантирует, что сформированные URL уникальны и основаны на примерах,制定的 Apache.

Рассмотрим правила, определенные в следующем скрипте -

# Filename: example.py
# Copyright: 2020 By w3codebox
# Author by: ru.oldtoolbag.com
# Date: 2020-08-08
from flask import Flask
 app = Flask(__name__)
 @app.route('/flask')
 def hello_flask():
     return 'Hello Flask'
 @app.route('/python/')
 def hello_python():
     return 'Hello Python'
 if __name__ == '__main__':
     app.run()

Две правила выглядят очень похожими, но во втором правиле используется хвостовая косая черта (/). Поэтому он стал стандартным URL. Поэтому использование /python или /python/ возвращает одинаковый результат. Но в первом случае URL:/flask/ приводит к странице 404 Not Found.