圖片來源:(https://shingekinokyojin.fandom.com/zh/wiki/%E8%89%BE%E9%AD%AF%E5%A4%9A%C2%B7%E7%90%B4)
Flask 與 Django 都是 Python 生態系中非常受歡迎的 Web 框架,它們都用快速開發 Web 應用程式。不過,兩者在設計理念和功能上有一些顯著的差異。
圖片來源:(https://zh.wikipedia.org/zh-tw/Flask)
是一個使用 Python 編寫輕量級 Web 應用框架。它設計簡潔、靈活,非常適合用來快速開發小型到中型的 Web 應用程式。Flask核心概念是最小化,只提供最基本功能,但同時也具備 高度可擴展性,可以通過各種擴展來增加功能
微型框架
:提供Web應用程式所需的基礎功能,例如:路由、請求處理和模板引擎,但沒有提供過多的預設配置。靈活性高
:可以根據自己的需求自由選擇和配置各種擴充套件,例如:資料庫 ORM、使用者驗證、表單處理學習曲線平緩
:Flask學習曲線相對平緩,對於初學者來說比較容易上手路由(Routes)
:定義 URL 和對應的處理函數模板(Templates)
:生成動態網頁內容請求(Requests)
:處理用戶的請求響應(Responses)
:返回給用戶的結果安裝Python
確定電腦已經安裝了 Python。在官網 Python 下載安裝適合自己操作系統版本
使用 pip 安裝 Flask
打開終端機 (Terminal) 或命令提示字元 (Command Prompt)
輸入命令
pip install Flask
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello():
return render_template('index.html', name='World')
if __name__ == '__main__':
app.run(debug=True)
簡單Flask應用程式會在根路徑顯示 Hello, World!
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
from flask import Flask
:導入 Flask 模組app = Flask(__name__)
:創建一個 Flask 應用程式@app.route('/')
:定義一個路由,當用戶訪問根目錄時,會執行 hello() 函數return 'Hello, World!'
:返回一個字串作為響應if __name__ == '__main__':
判斷是否為直接執行腳本,如果是,則啟動應用程式
在終端機中執行以下命令
python app.py
然後在瀏覽器中輸入 (http://127.0.0.1:5000/) 就可以看到 "Hello, World!"
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
name = '世界'
return render_template('index.html', name=name)
if __name__ == '__main__':
app.run()
在 templates 資料夾下創建一個 index.html 檔案:
<!DOCTYPE html>
<html>
<head>
<title>Hello, Flask!</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
圖片來源:(https://www.djangoproject.com/community/logos/)
是一個 高階 Python 網路框架,強調快速開發、安全且可維護的網站。它採用了 MTV (Model-Template-View) 的架構模式,將網站分成三個主要部分:
Model(模型)
:定義資料庫中的數據結構Template(模板)
:定義網頁的顯示方式View(視圖)
:處理請求,並返回相應的模板全功能框架
:是一個全功能 Web 框架,提供豐富功能,包括 ORM、模板引擎、管理介面、使用者驗證等,可以快速構建複雜的 Web 應用程式遵循「電池內含」原則
: Django 遵循「電池內含」原則,提供一套完整的工具和庫,可以讓開發者專注於業務邏輯的開發較高的學習曲線
:相較於Flask,Django 學習曲線相對較陡,需要掌握更多的概念和工具
# mysite/settings.py
# ... (其他設定)
# mysite/urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
# mysite/myApp/views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html', {'name': 'World'})
# mysite/myApp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
Django程式結構相對複雜一些,需要配置 settings
、urls
、views
等等
安裝Python
確定電腦已經安裝了 Python。在官網 Python 下載安裝適合自己操作系統版本
使用 pip 安裝 Django
打開終端機 (Terminal) 或命令提示字元 (Command Prompt)
輸入命令
pip install django
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = get_wsgi_application()
import os
:導入 os 模組用環境變數設置from django.core.wsgi import get_wsgi_application
:導入 Django 的 WSGI 應用程式os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
:設置 Django 的設定檔application = get_wsgi_application()
:獲取 WSGI 應用程式
django-admin startproject myproject
cd myproject
python manage.py runserver
Model
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(max_digits=10, decimal_places=2)
View
from django.shortcuts import render
from .models import Product
def product_list(request):
products = Product.objects.all()
return render(request, 'products.html', {'products': products})
Template
<!DOCTYPE html>
<html>
<head>
<title>產品列表</title>
</head>
<body>
<h1>產品列表</h1>
<ul>
{% for product in products %}
<li>{{ product.name }} - {{ product.price }}</li>
{% endfor %}
</ul>
</body>
</html>
Flask
情況
Django
情況
Flask 和 Django 都是優秀的 Python Web 框架,Flask 是一個功能強大且易於學習的 Web 框架,非常適合 Python 開發者,Django 是一個功能強大且成熟的 Web 框架,可以幫助快速開發出高品質的 Web 應用程式,選擇哪一個取決於專案需求和團隊的技術水平。希望可以更深入地了解 Flask 和 Django
圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)