Django後端開發基礎

Django是一個高級的Python Web框架,它鼓勵快速開發和乾淨、實用的設計。由經驗豐富的開發人員構建,Django負責Web開發中許多麻煩的部分,因此您可以專注於編寫應用程序,而無需重新發明輪子。

Django的核心理念

Django的設計哲學可以概括為以下幾點:

  • DRY (Don’t Repeat Yourself) - 減少代碼重複
  • 快速開發 - 從概念到完成的框架
  • 松耦合 - 各個組件相互獨立
  • 明確優於隱晦 - 顯式好於隱式
  • 模型-視圖-模板 - 清晰的架構分離

環境設置

開始使用Django前,需要先設置開發環境:

# 創建虛擬環境
python -m venv venv

# 激活虛擬環境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate

# 安裝Django
pip install django

# 檢查版本
python -m django --version

創建第一個Django項目

以下是創建新Django項目的基本步驟:

# 創建項目
django-admin startproject myproject

# 切換到項目目錄
cd myproject

# 創建應用
python manage.py startapp myapp

# 運行開發伺服器
python manage.py runserver

Django項目結構

一個基本的Django項目結構如下:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
    myapp/
        migrations/
        __init__.py
        admin.py
        apps.py
        models.py
        tests.py
        views.py

Django MTV架構

Django使用MTV(Model-Template-View)架構,這是MVC架構的一種變體:

  1. Model (模型) - 負責數據結構和數據庫交互
  2. Template (模板) - 負責HTML和表現層
  3. View (視圖) - 負責處理業務邏輯

模型示例

# myapp/models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField('date published')
    
    def __str__(self):
        return self.title

視圖示例

# myapp/views.py
from django.shortcuts import render
from .models import Article

def article_list(request):
    articles = Article.objects.all().order_by('-pub_date')
    context = {'articles': articles}
    return render(request, 'myapp/article_list.html', context)

URL配置示例

# myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('articles/', include('myapp.urls')),
]

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.article_list, name='article_list'),
    path('<int:article_id>/', views.article_detail, name='article_detail'),
]

模板示例

<!-- myapp/templates/myapp/article_list.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Article List</title>
</head>
<body>
    <h1>Articles</h1>
    <ul>
    {% for article in articles %}
        <li>
            <a href="{% url 'article_detail' article.id %}">
                {{ article.title }}
            </a>
            <small>{{ article.pub_date }}</small>
        </li>
    {% endfor %}
    </ul>
</body>
</html>

數據庫遷移

Django的數據庫遷移系統使管理數據庫模式變得簡單:

# 創建遷移
python manage.py makemigrations myapp

# 應用遷移
python manage.py migrate

Django管理員界面

Django自帶一個功能強大的管理員界面:

# myapp/admin.py
from django.contrib import admin
from .models import Article

admin.site.register(Article)

訪問管理界面需要創建超級用戶:

python manage.py createsuperuser

表單處理

Django提供了高效的表單處理功能:

# myapp/forms.py
from django import forms
from .models import Article

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content']

中間件和認證

Django包含強大的middleware系統和內置的用戶認證:

# settings.py (部分)
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

結論

Django是一個功能全面的Web框架,適合從小型到大型的各類Web應用開發。通過遵循其設計原則和最佳實踐,開發者可以快速構建安全、可靠且易於維護的Web應用。

隨著對Django基礎的掌握,您可以進一步探索其他高級功能,如REST框架、信號系統、緩存機制等,以構建更複雜、更高效的應用程序。