Обмен технологиями

[Flask от новичка до профессионала: Урок 1. Базовое введение в flask, быстрое создание и запуск проектов с помощью flask]

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

  1. Как нам начать с нуля и начать работу с новой структурой?
  2. В чем разница между облегченным фреймворком, например flask, и тяжелым фреймворком, например django?
  3. Для общих операций ORM базы данных в процессе веб-разработки.
  4. Следуйте процессу обучения flask, изучите и поймите новую среду (Sanic, FastAPI) самостоятельно.

Старые часто используемые фреймворки: django (поддерживает асинхронность после 3.0), flask (поддерживает асинхронность после 2.0), Tornado (асинхронно), Twisted (асинхронно).

Новые часто используемые фреймворки: FastAPI, sanic, django4.0 (текущая версия находится в процессе преобразования из синхронного в асинхронный), flask2.0 (текущая версия находится в процессе преобразования из синхронного в асинхронный)

Саник: https://sanicframework.org/zh/guide/

FastAPI: https://fastapi.tiangolo.com/zh/tutorial/first-steps/

Фляга

Flask родился в 2010 году. Это легкая среда веб-разработки, написанная Армином Ронахером на языке Python на основе набора инструментов Werkzeug.

Сам Flask эквивалентен ядру, и почти все остальные функции требуют расширений (расширение электронной почты Flask-Mail, аутентификация пользователя Flask-Login, база данных Flask-SQLAlchemy), все из которых необходимо реализовать с помощью сторонних расширений. Например, вы можете использовать расширение Flask для добавления ORM, инструментов проверки форм, загрузки файлов, проверки личности и т. д. Flask не использует базу данных по умолчанию. Вы можете выбрать MySQL или NoSQL.

Набор инструментов WSGI Flask использует Werkzeug (модуль маршрутизации), а механизм шаблонов использует Jinja2. Itdangrous (модуль шифрования токенов), Click (инструмент управления командами терминала) и само ядро ​​flask — эти пять основных модулей образуют структуру Flask.

Официальный сайт: https://flask.palletsprojects.com/en/2.0.x/

Официальная документация: https://dormousehole.readthedocs.io/en/latest/index.html

Часто используемые сторонние пакеты расширений для Flask:

  • Flask-SQLAlchemy: операционная база данных, ORM;
  • Flask-script: инструмент сценариев терминала, поддержка (устарело, официальная встроенная поддержка: нажмите)
  • Flask-migrate: управляет базой данных миграции;
  • Flask-Session: указан метод хранения сеанса;
  • Flask-Mail: электронная почта;
  • Flask-Login: статус аутентифицированного пользователя (в django есть встроенный модуль аутентификации, который используется для входа и выхода пользователя)
  • Flask-OpenID: аутентификация, OAuth (трехсторонняя авторизация);
  • Flask-RESTful: инструмент для разработки REST API;
  • Flask JSON-RPC: разработка вызова удаленной службы [процесс] json-rpc
  • Flask-Bable: обеспечивает поддержку интернационализации и локализации, а также перевод;
  • Flask-Moment: локализовать дату и время
  • Flask-Admin: платформа для простых и расширяемых интерфейсов управления.
  • Flask-Bootstrap: Интегрируйте фронтенд-фреймворк Twitter Bootstrap (фронтенд и бэкенд разделены, за исключением сайта администратора, эта штука практически не используется)
  • Flask-WTF: модуль генерации форм (фронт-энд и бэк-энд разделены, кроме админки, эта штука принципиально не используется)
  • Flask-Marshmallow: сериализация (аналогично сериализатору djangorestframework)

Вы можете просмотреть больше расширений, официально рекомендованных flask, через https://pypi.org/search/?c=Framework+%3A%3A+Flask.

Подготовить

# anaconda创建虚拟环境
conda create -n flask python=3.9
# 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。
# conda activate  <虚拟环境名称>
conda activate flask 
# 退出当前虚拟环境
conda deactivate
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Вставьте сюда описание изображения

Чтобы установить колбу, используйте следующую команду:

pip install flask -i https://pypi.douban.com/simple
  • 1

Вставьте сюда описание изображения

Создать проект колбы

В отличие от Django, Flask не предоставляет никаких автоматических операций, поэтому для запуска проекта вам необходимо вручную создать каталог проекта и файл управления.

Например, создайте каталог проекта flaskdemo и создайте в нем файл Manage.py. Откройте проект в pycharm и укажите созданную выше виртуальную среду.

Вставьте сюда описание изображения

Создайте файл записи запуска для платформы Flask.Имя может бытьapp.py/run.py/main.py/index.py/manage.py/start.py

Manage.py, код:

# 1. 导入flask核心类
from flask import Flask

# 2. 初始化web应用程序的实例对象
app = Flask(__name__)


# 4. 可以通过实例对象app提供的route路由装饰器,绑定视图与uri地址的关系
@app.route("/")
def index():
    # 5. 默认flask支持函数式视图,视图的函数名不能重复,否则报错!!!
    # 视图的返回值将被flask包装成响应对象的HTML文档内容,返回给客户端。
    return "<h1>hello flask</h1>"


if __name__ == '__main__':
    # 3. 运行flask提供的测试web服务器程序
    app.run(host="0.0.0.0", port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

Анализ кода:

# 导入Flask类
from flask import Flask

"""
Flask类的实例化参数:
import_name      Flask程序所在的包(模块),传 __name__ 就可以
                           其可以决定 Flask 在访问静态文件时查找的路径
static_path          静态文件存储访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path    静态文件的url访问路径,可以不传,默认为:/ + static_folder
static_folder        静态文件存储的文件夹,可以不传,默认为 static
template_folder  模板文件存储的文件夹,可以不传,默认为 templates
"""
app = Flask(__name__)

# 编写路由视图
# flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中。
# flask的视图函数,flask中默认允许通过return返回html格式数据给客户端。
@app.route('/')
def index():
    # 返回值如果是字符串,被自动作为参数传递给response对象进行实例化返回客户端
    return "<h1>hello flask</h1>"

# 指定服务器IP和端口
if __name__ == '__main__':
    # 运行flask
    app.run(host="0.0.0.0", port=5000, debug=True)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26