Berbagi teknologi

[Flask dari pemula hingga mahir: Pelajaran 1: Pengenalan dasar tentang flask, buat dan jalankan proyek dengan cepat menggunakan flask]

2024-07-12

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

  1. Bagaimana kita harus memulai dari awal dan memulai dengan kerangka kerja baru?
  2. Apa perbedaan antara kerangka ringan seperti flask dan kerangka kelas berat seperti Django?
  3. Untuk operasi ORM database umum dalam proses pengembangan web.
  4. Ikuti proses pembelajaran flask dan pelajari serta pahami sendiri kerangka kerja baru (Sanic, FastAPI).

Kerangka kerja lama yang umum digunakan: Django (mendukung asynchronous setelah 3.0), flask (mendukung asynchronous setelah 2.0), tornado (asynchronous), twisted (asynchronous)

Kerangka kerja baru yang umum digunakan: FastAPI, sanic, Django4.0 (versi saat ini sedang dalam proses transformasi dari sinkron ke asinkron), flask2.0 (versi saat ini sedang dalam proses transformasi dari sinkron ke asinkron)

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

FastAPI:https://fastapi.tiangolo.com/zh/tutorial/langkah-pertama/

Labu

Flask lahir pada tahun 2010. Ini adalah kerangka pengembangan web ringan yang ditulis oleh Armin Ronacher dalam bahasa Python berdasarkan kotak peralatan Werkzeug.

Flask sendiri setara dengan kernel, dan hampir semua fungsi lainnya memerlukan ekstensi (ekstensi email Flask-Mail, otentikasi pengguna Flask-Login, database Flask-SQLAlchemy), yang semuanya perlu diimplementasikan dengan ekstensi pihak ketiga. Misalnya, Anda dapat menggunakan ekstensi Flask untuk menambahkan ORM, alat verifikasi formulir, pengunggahan file, verifikasi identitas, dll. Flask tidak menggunakan database default. Anda dapat memilih MySQL atau NoSQL.

Kotak alat WSGI Flask menggunakan Werkzeug (modul perutean), dan mesin templatnya menggunakan Jinja2. Itsdangrous (modul enkripsi token), Click (alat manajemen perintah terminal), dan kernel flask itu sendiri, kelima modul inti ini membentuk kerangka kerja Flask.

Situs web resmi: https://flask.palletsprojects.com/en/2.0.x/

Dokumentasi resmi: https://dormousehole.readthedocs.io/id/terbaru/indeks.html

Paket ekstensi pihak ketiga yang umum digunakan untuk Flask:

  • Flask-SQLAlchemy: database operasi, ORM;
  • Skrip labu: alat skrip terminal, perancah; (Usang, perancah bawaan resmi: Klik)
  • Flask-migrate: mengelola database migrasi;
  • Flask-Session: Metode penyimpanan sesi ditentukan;
  • Flask-Mail: email;
  • Flask-Login: status pengguna yang diautentikasi (Django mempunyai modul Auth bawaan, yang digunakan untuk merealisasikan login dan keluar pengguna,)
  • Flask-OpenID: otentikasi, OAuth; (otorisasi tiga pihak,)
  • Flask-RESTful: Alat untuk mengembangkan REST API;
  • Flask JSON-RPC: Mengembangkan panggilan [proses] layanan jarak jauh json-rpc
  • Flask-Bable: Memberikan dukungan dan penerjemahan internasionalisasi dan lokalisasi;
  • Flask-Moment: melokalkan tanggal dan waktu
  • Flask-Admin: Kerangka kerja untuk antarmuka manajemen yang sederhana dan dapat diperluas
  • Flask-Bootstrap: Mengintegrasikan framework Twitter Bootstrap front-end (front-end dan back-end dipisahkan, kecuali situs admin, hal ini pada dasarnya tidak digunakan)
  • Flask-WTF: modul pembuatan formulir; (ujung depan dan belakang dipisahkan, kecuali untuk situs admin, hal ini pada dasarnya tidak digunakan)
  • Flask-Marshmallow: serialisasi (mirip dengan serializer Djangorestframework)

Anda dapat melihat lebih banyak ekstensi yang direkomendasikan secara resmi oleh flask melalui https://pypi.org/search/?c=Framework+%3A%3A+Flask

Mempersiapkan

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

Masukkan deskripsi gambar di sini

Untuk menginstall flask, gunakan perintah berikut:

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

Masukkan deskripsi gambar di sini

Buat proyek labu

Tidak seperti Django, Flask tidak menyediakan operasi otomatis apa pun, jadi Anda perlu membuat direktori proyek dan berkas manajemen secara manual untuk memulai proyek.

Misalnya, buat direktori proyek flaskdemo dan buat manage.py di direktori tersebut. Buka proyek di pycharm dan tentukan lingkungan virtual yang dibuat di atas

Masukkan deskripsi gambar di sini

Buat file entri startup untuk kerangka labu.Namanya bisa sajaapp.py/run.py/main.py/index.py/manage.py/start.py

kelola.py, kode:

# 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

Analisis kode:

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