iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Python

進擊的Python系列 第 26

Day23-Flask與Django(艾魯多)

  • 分享至 

  • xImage
  •  

大家好!我是艾魯多~我分享Flask與Django

https://ithelp.ithome.com.tw/upload/images/20240824/20163257JKQsI9PkkK.png
圖片來源:(https://shingekinokyojin.fandom.com/zh/wiki/%E8%89%BE%E9%AD%AF%E5%A4%9A%C2%B7%E7%90%B4)

Python Web 框架

Flask 與 Django 都是 Python 生態系中非常受歡迎的 Web 框架,它們都用快速開發 Web 應用程式。不過,兩者在設計理念和功能上有一些顯著的差異。

https://ithelp.ithome.com.tw/upload/images/20240824/20163257saBxiUzxr4.png
圖片來源:(https://zh.wikipedia.org/zh-tw/Flask)

Flask(輕量Web應用程式)

是一個使用 Python 編寫輕量級 Web 應用框架。它設計簡潔、靈活,非常適合用來快速開發小型到中型的 Web 應用程式。Flask核心概念是最小化,只提供最基本功能,但同時也具備 高度可擴展性,可以通過各種擴展來增加功能

  • 微型框架:提供Web應用程式所需的基礎功能,例如:路由、請求處理和模板引擎,但沒有提供過多的預設配置。
  • 靈活性高:可以根據自己的需求自由選擇和配置各種擴充套件,例如:資料庫 ORM、使用者驗證、表單處理
  • 學習曲線平緩:Flask學習曲線相對平緩,對於初學者來說比較容易上手

Flask基本架構

  • 路由(Routes):定義 URL 和對應的處理函數
  • 模板(Templates):生成動態網頁內容
  • 請求(Requests):處理用戶的請求
  • 響應(Responses):返回給用戶的結果

Flask安裝教學

1. 安裝Python

確定電腦已經安裝了 Python。在官網 Python 下載安裝適合自己操作系統版本

2. 使用 pip 安裝 Flask

打開終端機 (Terminal) 或命令提示字元 (Command Prompt)

輸入命令

pip install Flask

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://ithelp.ithome.com.tw/upload/images/20240824/20163257SLWgcQ1N8s.png
圖片來源:(https://www.djangoproject.com/community/logos/)

Django(打造高性能、可擴展Web應用程式)

是一個 高階 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程式結構相對複雜一些,需要配置 settingsurlsviews 等等

Django安裝教學

1. 安裝Python

確定電腦已經安裝了 Python。在官網 Python 下載安裝適合自己操作系統版本

2. 使用 pip 安裝 Django

打開終端機 (Terminal) 或命令提示字元 (Command Prompt)

輸入命令

pip install django

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 專案

django-admin startproject myproject

運行開發伺服器

cd myproject
python manage.py runserver

Django 的 MTV 架構

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 情況
    • 需要高度的靈活性和客製化
    • 對於小型或中型專案,希望快速開發
    • 想要學習 Web 框架的基礎知識
  • 選擇 Django 情況
    • 需要一個全功能的框架,提供豐富的功能
    • 對於大型複雜的專案,需要一個穩定的框架
    • 團隊成員對 Python Web 開發經驗較少

總結

Flask 和 Django 都是優秀的 Python Web 框架,Flask 是一個功能強大且易於學習的 Web 框架,非常適合 Python 開發者,Django 是一個功能強大且成熟的 Web 框架,可以幫助快速開發出高品質的 Web 應用程式,選擇哪一個取決於專案需求和團隊的技術水平。希望可以更深入地了解 Flask 和 Django

https://ithelp.ithome.com.tw/upload/images/20240906/20163257n0NYhf4gk4.jpg
https://ithelp.ithome.com.tw/upload/images/20240906/20163257HUxR4k1i5u.jpg
圖片來源:(https://forum.gamer.com.tw/Co.php?bsn=43473&sn=45361)


上一篇
Day22-陣列排序
下一篇
Day24-Matplotlib(格達)
系列文
進擊的Python36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言