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架構的一種變體:
- Model (模型) - 負責數據結構和數據庫交互
- Template (模板) - 負責HTML和表現層
- 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框架、信號系統、緩存機制等,以構建更複雜、更高效的應用程序。