Partage de technologie

[Flask du débutant au compétent : Leçon 1 : Introduction de base à Flask, créer et exécuter rapidement des projets avec Flask]

2024-07-12

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

  1. Comment devrions-nous repartir de zéro et démarrer avec un nouveau framework ?
  2. Quelle est la différence entre un framework léger comme flask et un framework lourd comme Django ?
  3. Pour les opérations ORM de base de données courantes dans le processus de développement Web.
  4. Suivez le processus d'apprentissage du flacon et apprenez et comprenez un nouveau framework (Sanic, FastAPI) par vous-même

Anciens frameworks couramment utilisés : django (prend en charge l'asynchrone après 3.0), flask (prend en charge l'asynchrone après 2.0), tornado (asynchrone), twisted (asynchrone)

Nouveaux frameworks couramment utilisés : FastAPI, sanic, django4.0 (la version actuelle est en cours de transformation de synchrone à asynchrone), flask2.0 (la version actuelle est en cours de transformation de synchrone à asynchrone)

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

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

Ballon

Flask est né en 2010. Il s'agit d'un framework de développement web léger écrit par Armin Ronacher en langage Python basé sur la boîte à outils Werkzeug.

Flask lui-même est équivalent à un noyau, et presque toutes les autres fonctions nécessitent des extensions (extension de messagerie Flask-Mail, authentification utilisateur Flask-Login, base de données Flask-SQLAlchemy), qui doivent toutes être implémentées avec des extensions tierces. Par exemple, vous pouvez utiliser l'extension Flask pour ajouter ORM, des outils de vérification de formulaire, le téléchargement de fichiers, la vérification d'identité, etc. Flask n'utilise pas de base de données par défaut. Vous pouvez choisir MySQL ou NoSQL.

La boîte à outils WSGI de Flask utilise Werkzeug (module de routage) et le moteur de modèles utilise Jinja2. Itsdangrous (module de cryptage de jetons), Click (outil de gestion des commandes de terminal) et le noyau Flask lui-même, ces cinq modules principaux forment le framework Flask.

Site officiel : https://flask.palletsprojects.com/en/2.0.x/

Documentation officielle : https://dormousehole.readthedocs.io/fr/latest/index.html

Packages d'extension tiers couramment utilisés pour Flask :

  • Flask-SQLAlchemy : base de données d'exploitation, ORM ;
  • Flask-script : outil de script de terminal, échafaudage ; (Échafaudage intégré officiel obsolète : cliquez)
  • Flask-migrate : gère la base de données de migration ;
  • Flask-Session : méthode de stockage de session spécifiée ;
  • Flask-Mail : e-mail ;
  • Flask-Login : statut de l'utilisateur authentifié ; (django a un module Auth intégré, qui est utilisé pour réaliser la connexion et la sortie de l'utilisateur)
  • Flask-OpenID : authentification, OAuth (autorisation tripartite,)
  • Flask-RESTful : Outil de développement d'API REST ;
  • Flask JSON-RPC : Développer un appel [processus] de service à distance json-rpc
  • Flask-Bable : fournit un support et une traduction en matière d'internationalisation et de localisation ;
  • Flask-Moment : localiser la date et l'heure
  • Flask-Admin : Un framework pour des interfaces de gestion simples et extensibles
  • Flask-Bootstrap : intégrez le framework Twitter Bootstrap front-end (le front-end et le back-end sont séparés, à l'exception du site d'administration, cette chose n'est fondamentalement pas utilisée)
  • Flask-WTF : module de génération de formulaires (le front et le back end sont séparés, à l'exception du site d'administration, cette chose n'est fondamentalement pas utilisée)
  • Flask-Marshmallow : sérialisation (similaire au sérialiseur de djangorestframework)

Vous pouvez afficher plus d'extensions officiellement recommandées par flask via https://pypi.org/search/?c=Framework+%3A%3A+Flask

Préparer

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

Insérer la description de l'image ici

Pour installer Flask, utilisez la commande suivante :

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

Insérer la description de l'image ici

Créer un projet de flacon

Contrairement à Django, Flask ne propose aucune opération automatique, vous devez donc créer manuellement le répertoire du projet et le fichier de gestion pour démarrer le projet.

Par exemple, créez le répertoire du projet flaskdemo et créez manage.py dans le répertoire. Ouvrez le projet dans pycharm et spécifiez l'environnement virtuel créé ci-dessus.

Insérer la description de l'image ici

Créez un fichier d'entrée de démarrage pour le framework flask.Le nom peut êtreapp.py/run.py/main.py/index.py/manage.py/start.py

gérer.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

Analyse des codes :

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