文章

Django - 應用程式結構

第二天,我們將學習 Django 專案的結構,理解專案與應用的關係,並創建一個新的應用來加深理解。


課程目標

  • 瞭解 Django 專案的文件結構。
  • 學習 Django 中專案與應用的關係。
  • 創建並註冊一個新的 Django 應用。

課程內容

1. Django 專案文件結構

在 Day 1 中,我們創建的專案結構如下:

1
2
3
4
5
6
7
8
myproject/
    manage.py            # Django 管理工具
    myproject/           # 專案核心文件
        __init__.py      # 專案初始化文件
        settings.py      # 專案設定
        urls.py          # 全局路由配置
        asgi.py          # ASGI 應用入口
        wsgi.py          # WSGI 應用入口

重要文件介紹

  • manage.py
    • 用於運行命令,如啟動伺服器、遷移資料庫等。
  • settings.py
    • 存放專案的全局配置,如資料庫、應用列表等。
  • urls.py
    • 定義全局路由表,用於將 URL 分派到應用的視圖函數。

2. 專案與應用的關係

  • 專案 (Project)

    • 一個 Django 專案包含整體配置與多個應用。
    • 它負責整合應用並提供全局設定。
  • 應用 (App)

    • Django 應用是專門處理某一功能的模組化代碼單元。
    • 例如,Blog 專案可以有 postsusers 兩個應用。

分離專案與應用的好處

  • 提高可重用性:應用可以獨立運作並用於多個專案。
  • 增強可維護性:模組化的代碼更易於管理。

3. 創建 Django 應用

3.1 創建新應用

  1. 使用 startapp 命令創建應用:

    1
    
    python manage.py startapp myapp
    
  2. 新應用的目錄結構:

    1
    2
    3
    4
    5
    6
    7
    8
    
    myapp/
        __init__.py        # 應用初始化文件
        admin.py           # 註冊模型至 Django 管理後台
        apps.py            # 應用設定
        migrations/        # 資料庫遷移文件夾
        models.py          # 定義資料模型
        tests.py           # 單元測試
        views.py           # 視圖函數
    

3.2 註冊應用

  1. settings.py 中的 INSTALLED_APPS 列表中添加應用名稱:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'myapp',  # 新增的應用
    ]
    

4. 定義應用的 URL 路由

4.1 創建應用內的路由文件

  1. myapp 目錄下創建 urls.py 文件:

    1
    2
    3
    4
    5
    6
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    
  2. views.py 中添加簡單的視圖:

    1
    2
    3
    4
    
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Welcome to MyApp!")
    

4.2 將應用路由包含到專案中

  1. 修改 myproject/urls.py,包含 myapp.urls

    1
    2
    3
    4
    5
    6
    7
    
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('myapp/', include('myapp.urls')),  # 包含應用路由
    ]
    
  2. 現在訪問 http://127.0.0.1:8000/myapp/ 即可看到應用的首頁。


5. 本日總結

  • 瞭解了 Django 專案與應用的結構和關係。
  • 學會如何創建與註冊一個應用。
  • 成功為應用添加了 URL 路由與簡單的視圖。

作業

  1. myapp 添加另一個路由和視圖,返回一段個性化的問候語。
  2. 嘗試創建一個新的應用,設計路由與簡單的視圖。

本文章以 CC BY 4.0 授權