English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
Кроме стандартной части переменной строки, можно использовать следующие правила конструкторов -
Номер | Конвертер | Описание |
1 | int | принимает целое число |
2 | float | Для плавающей точки |
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.