Technologieaustausch

[Flask vom Anfänger bis zum Experten: Lektion 1: Grundlegende Einführung in Flask, schnelles Erstellen und Ausführen von Projekten mit Flask]

2024-07-12

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

  1. Wie sollen wir bei Null anfangen und mit einem neuen Framework durchstarten?
  2. Was ist der Unterschied zwischen einem leichten Framework wie Flask und einem schweren Framework wie Django?
  3. Für allgemeine Datenbank-ORM-Operationen im Webentwicklungsprozess.
  4. Verfolgen Sie den Prozess des Flask-Lernens und lernen und verstehen Sie selbst ein neues Framework (Sanic, FastAPI).

Alte, häufig verwendete Frameworks: Django (unterstützt asynchron nach 3.0), flask (unterstützt asynchron nach 2.0), Tornado (asynchron), Twisted (asynchron)

Neue häufig verwendete Frameworks: FastAPI, Sanic, Django4.0 (die aktuelle Version befindet sich im Transformationsprozess von synchron zu asynchron), flask2.0 (die aktuelle Version befindet sich im Transformationsprozess von synchron zu asynchron)

Sanic: https://sanicframework.org/zh/guide/

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

Flasche

Flask wurde 2010 geboren. Es ist ein leichtes Webentwicklungs-Framework, das von Armin Ronacher in Python-Sprache geschrieben wurde und auf der Werkzeug-Toolbox basiert.

Flask selbst entspricht einem Kernel, und fast alle anderen Funktionen erfordern Erweiterungen (E-Mail-Erweiterung Flask-Mail, Benutzerauthentifizierung Flask-Login, Datenbank Flask-SQLAlchemy), die alle Erweiterungen von Drittanbietern erfordern. Sie können beispielsweise die Flask-Erweiterung verwenden, um ORM, Tools zur Formularüberprüfung, Datei-Upload, Identitätsüberprüfung usw. hinzuzufügen. Flask verwendet keine Standarddatenbank. Sie können MySQL oder NoSQL wählen.

Die WSGI-Toolbox von Flask verwendet Werkzeug (Routing-Modul) und die Template-Engine verwendet Jinja2. Itsdangrous (Token-Verschlüsselungsmodul), Click (Terminalbefehlsverwaltungstool) und der Flask-Kernel selbst, diese fünf Kernmodule bilden das Flask-Framework.

Offizielle Website: https://flask.palletsprojects.com/en/2.0.x/

Offizielle Dokumentation: https://dormousehole.readthedocs.io/en/latest/index.html

Häufig verwendete Erweiterungspakete von Drittanbietern für Flask:

  • Flask-SQLAlchemy: Betriebsdatenbank, ORM;
  • Flask-script: Terminal-Skript-Tool, Gerüst; (Veraltet, offizielles integriertes Gerüst: Klicken)
  • Flask-migrate: verwaltet die Migrationsdatenbank;
  • Flask-Session: Sitzungsspeichermethode angegeben;
  • Flask-Mail: E-Mail;
  • Flask-Login: authentifizierter Benutzerstatus; (Django verfügt über ein integriertes Auth-Modul, das zum Implementieren der Benutzeranmeldung und -beendigung verwendet wird.)
  • Flask-OpenID: Authentifizierung, OAuth (Drei-Parteien-Autorisierung)
  • Flask-RESTful: Tool zur Entwicklung der REST-API;
  • Flask JSON-RPC: JSON-RPC-Remote-Service-[Prozess]-Aufruf entwickeln
  • Flask-Bable: Bietet Unterstützung und Übersetzung bei der Internationalisierung und Lokalisierung;
  • Flask-Moment: Datum und Uhrzeit lokalisieren
  • Flask-Admin: Ein Framework für einfache und erweiterbare Verwaltungsschnittstellen
  • Flask-Bootstrap: Integrieren Sie das Front-End-Twitter-Bootstrap-Framework (Front-End und Back-End sind getrennt, mit Ausnahme der Admin-Site wird dieses Ding grundsätzlich nicht verwendet).
  • Flask-WTF: Formulargenerierungsmodul (das vordere und hintere Ende sind getrennt, mit Ausnahme der Admin-Site wird dieses Ding grundsätzlich nicht verwendet)
  • Flask-Marshmallow: Serialisierung (ähnlich dem Serializer von Djangorestframework)

Weitere offiziell von Flask empfohlene Erweiterungen finden Sie unter https://pypi.org/search/?c=Framework+%3A%3A+Flask

Vorbereiten

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

Fügen Sie hier eine Bildbeschreibung ein

Um flask zu installieren, verwenden Sie den folgenden Befehl:

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

Fügen Sie hier eine Bildbeschreibung ein

Flaschenprojekt erstellen

Im Gegensatz zu Django bietet Flask keine automatischen Vorgänge, sodass Sie das Projektverzeichnis und die Verwaltungsdatei manuell erstellen müssen, um das Projekt zu starten.

Erstellen Sie beispielsweise das Projektverzeichnis flaskdemo und erstellen Sie manage.py im Verzeichnis. Öffnen Sie das Projekt in Pycharm und geben Sie die oben erstellte virtuelle Umgebung an

Fügen Sie hier eine Bildbeschreibung ein

Erstellen Sie eine Starteintragsdatei für das Flask-Framework.Der Name kann seinapp.py/run.py/main.py/index.py/manage.py/start.py

manage.py, Code:

# 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

Code-Analyse:

# 导入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