title: 快速瞭解Django:核心概念解析與實踐指南
date: 2024/5/1 20:31:41
updated: 2024/5/1 20:31:41
categories:
- 後端開發
tags:
- Django核心
- 路由系統
- 檢視系統
- ORM管理
- 中介軟體
- Web框架
- 登入裝飾器
第一章:Django簡介
背景和發展歷程:
Django是一個開放原始碼的Web應用框架,由Lawrence Journal-World開發並於2005年釋出。最初是為了滿足新聞網站的需求而開發的,後來成為一個功能強大且靈活的Web開發框架。Django得到了全球開發者的廣泛認可和使用,目前被許多知名網站和公司所採用。
選擇Django的原因:
- 高效易用:Django遵循"快速開發"的原則,提供了許多現成的工具和功能,使開發者能夠快速構建功能完善的Web應用。
- 完善的文件和社群支援:Django擁有豐富的官方文件和活躍的社群,開發者可以輕鬆獲取幫助和資源。
- 豐富的功能模組:Django內建了許多常用的功能模組,如使用者認證、管理後臺、表單處理等,減少了開發工作量。
- 安全性強:Django具有內建的安全機制,能夠有效防範常見的Web安全漏洞,如SQL隱碼攻擊、跨站指令碼等。
- 可擴充套件性好:Django支援各種第三方外掛和擴充套件,可以根據專案需求靈活擴充套件功能。
核心特點和優勢:
- MTV架構:Django採用了MTV(Model-Template-View)的設計模式,將應用程式分為模型、模板和檢視三層,使程式碼結構清晰,易於維護。
- 強大的ORM:Django的ORM(物件關係對映)提供了方便的資料庫操作方式,使開發者能夠透過Python程式碼運算元據庫,而無需編寫SQL語句。
- 自動化Admin後臺:Django自帶了一個強大的Admin後臺管理工具,可以方便地管理網站內容和資料。
- 靈活的URL配置:Django的URL配置非常靈活,可以透過簡單的配置實現URL與檢視函式的對映關係,支援正規表示式等高階匹配方式。
- 模板系統:Django的模板系統簡單易用,支援模板繼承、過濾器、標籤等功能,使前端開發更加高效。
- 安全性:Django內建了一些安全特性,如跨站請求偽造(CSRF)保護、XSS(跨站指令碼攻擊)防護等,幫助開發者構建安全的Web應用。
第二章:環境搭建與專案建立
環境搭建:
-
安裝Python:Django是基於Python的,首先確保你的計算機上安裝了Python(推薦使用最新穩定版)。
-
安裝Django:開啟命令列(Windows使用者可以使用cmd或PowerShell,Mac/Linux使用者使用終端),輸入以下命令安裝Django:
pip install django
-
安裝資料庫驅動:根據你的專案需求選擇資料庫,如PostgreSQL、MySQL或SQLite。安裝相應的資料庫驅動,如:
pip install psycopg2-binary (for PostgreSQL) pip install mysqlclient (for MySQL) pip install django.db.backends.sqlite3 (for SQLite)
-
設定環境變數:確保Python可執行路徑在系統環境變數中,或者在命令列中使用
python
而不是python3
。
建立第一個Django專案:
-
使用命令列,進入你希望存放專案的資料夾:
cd /path/to/your/project/folder
-
執行Django命令建立專案:
django-admin startproject my_first_django_project
這將建立一個名為
my_first_django_project
的資料夾,其中包含了基本的Django專案結構。
Django專案的基本結構和檔案目錄: 一個典型的Django專案結構包括以下主要檔案和目錄:
- my_first_django_project:專案根目錄,包含專案的配置檔案和管理工具。
- my_first_django_project/settings.py:專案設定檔案,包含各種配置資訊。
- my_first_django_project/urls.py:專案URL配置檔案,定義了應用的URL結構。
- my_first_django_project/wsgi.py:Web伺服器介面,用於將請求傳遞給Django。
- my_first_django_project/migrations:資料庫遷移目錄,用於管理資料庫結構的變更。
- my_first_django_project/static:靜態檔案目錄,存放CSS、JavaScript等資源。
- my_first_django_project/templates:模板目錄,用於存放HTML和模板檔案。
- my_first_django_project manage.py:專案管理工具,用於執行各種管理任務。
在my_first_django_project
資料夾中,通常會有一個或多個應用(app),每個應用有自己的檔案結構,但基本結構相似,包含模型(model.py)、檢視(views.py)、模板(templates)和URL配置(urls.py)等。透過startapp
命令可以建立新的應用。
建立專案後,啟動開發伺服器:
python manage.py runserver
然後在瀏覽器中訪問http://127.0.0.1:8000/
,你應該能看到Django的歡迎頁面,表示專案已經成功建立並執行。
第三章:模型層(Model)
概念和作用:
在Django中,模型是與資料庫互動的核心部分,用於定義資料結構和資料之間的關係。每個模型類對應資料庫中的一張表,每個模型類的屬性對應表中的欄位。透過模型,可以輕鬆地進行資料庫操作,包括建立、讀取、更新和刪除資料。
定義模型類和欄位:
-
建立應用:首先,在Django專案中建立一個應用(app),使用
manage.py
的startapp
命令。 -
定義模型類:在應用中的
models.py
檔案中定義模型類,每個類對應一個資料表。from django.db import models class Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=8, decimal_places=2) description = models.TextField() created_at = models.DateTimeField(auto_now_add=True)
-
欄位型別:Django提供了多種欄位型別,如
CharField
(字元型)、IntegerField
(整型)、DecimalField
(十進位制數)、TextField
(文字型)、DateTimeField
(日期時間型)等,適用於不同型別的資料。 -
欄位選項:每個欄位可以使用各種選項來定義其行為,如
max_length
(最大長度)、default
(預設值)、unique
(唯一性)、auto_now_add
(自動新增當前時間)等。
Django的ORM及使用方法:
-
ORM概念:物件關係對映(ORM)是一種程式設計技術,將資料庫表對映為物件,使開發者可以透過物件導向的方式運算元據庫,而無需直接編寫SQL語句。
-
模型操作:透過模型類可以執行各種資料庫操作,如建立新資料、查詢資料、更新資料和刪除資料。
-
建立資料:
product = Product(name='Phone', price=999.99, description='Smartphone') product.save()
-
查詢資料:
products = Product.objects.all() # 查詢所有資料 product = Product.objects.get(id=1) # 根據條件查詢單個資料
-
更新資料:
product = Product.objects.get(id=1) product.price = 899.99 product.save()
-
刪除資料:
product = Product.objects.get(id=1) product.delete()
-
-
查詢集(QuerySet) :查詢操作返回的是查詢集,可以對查詢集進行進一步篩選、排序和限制。
products = Product.objects.filter(price__gte=500) # 價格大於等於500的產品 products = products.order_by('-price') # 按價格降序排序 products = products[:5] # 只取前5個產品
-
關聯關係:透過外來鍵(ForeignKey)和多對多欄位(ManyToManyField)可以定義模型之間的關聯關係,實現資料表之間的關聯。
class Category(models.Model): name = models.CharField(max_length=50) class Product(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(Category, on_delete=models.CASCADE)
-
遷移操作:每當更改模型類時,需要生成並應用遷移以更新資料庫結構。
python manage.py makemigrations python manage.py migrate
透過模型定義和ORM操作,開發者可以輕鬆地管理和運算元據庫中的資料,實現資料持久化和互動。
第四章:檢視層(View)
作用和功能:
在Django中,檢視層是處理使用者請求的核心部分,它負責接收來自客戶端的請求,處理業務邏輯,然後將結果呈現給使用者。檢視的主要功能包括接收請求引數、呼叫模型進行資料處理、執行邏輯操作、以及決定如何響應使用者(如渲染模板,返回JSON資料等)。
編寫檢視函式處理使用者請求:
-
定義檢視函式:在
views.py
中,建立一個函式來處理特定的HTTP請求(如GET、POST等)。from django.shortcuts import render from .models import Product def product_list(request): products = Product.objects.all() return render(request, 'product_list.html', {'products': products})
-
接收請求引數:檢視函式可以接收
request
物件,該物件包含了使用者請求的所有資訊,如GET引數、POST資料等。 -
呼叫模型:檢視可以呼叫模型的方法來獲取資料或執行其他操作。
-
響應生成:檢視函式通常會返回一個響應,可能是HTML模板、JSON資料、重定向等。
檢視的裝飾器和通用檢視的應用:
-
裝飾器:Django提供了許多裝飾器來增強檢視的功能,如
login_required
(需要登入)、permission_required
(需要特定許可權)等。例如,限制只有管理員才能訪問某個檢視:from django.contrib.auth.decorators import login_required @login_required def admin_view(request): # ...
-
通用檢視:Django提供了一些高階檢視,如
ListView
、DetailView
、CreateView
、UpdateView
、DeleteView
等,用於處理常見的CRUD(建立、讀取、更新和刪除)操作。這些檢視簡化了檢視的編寫,只需要定義一些額外的引數和模型關係,如:from django.views.generic import ListView class ProductListView(ListView): model = Product template_name = 'product_list.html'
通用檢視通常與模板和URL配置結合使用,提供了一種更為模組化的開發方式。
透過檢視層,你可以將業務邏輯與HTTP請求分離,使得程式碼更易於理解和維護。同時,裝飾器和通用檢視的使用可以提高開發效率和程式碼的重用性。
第五章:模板層(Template)
基本語法和特性:
Django模板語言是一種輕量級的模板語言,用於在HTML中嵌入動態資料和邏輯。基本語法包括變數、標籤和過濾器:
- 變數:用
{{ variable }}
表示,用於在模板中插入動態資料。 - 標籤:用
{% tag %}
表示,用於控制模板的邏輯,如if語句、for迴圈等。 - 過濾器:用
{{ variable|filter }}
表示,用於對變數進行處理,如格式化日期、字串擷取等。
使用模板渲染資料:
-
建立模板檔案:在
templates
目錄下建立HTML檔案,編寫模板程式碼。 -
傳遞資料:在檢視函式中將資料傳遞給模板進行渲染。
from django.shortcuts import render def product_list(request): products = Product.objects.all() return render(request, 'product_list.html', {'products': products})
-
渲染模板:在模板中使用變數和標籤來展示資料。
<ul> {% for product in products %} <li>{{ product.name }}</li> {% endfor %} </ul>
模板繼承、過濾器和標籤的使用方法:
-
模板繼承:可以透過繼承基礎模板來重用通用的頁面結構,子模板可以覆蓋或擴充套件父模板的內容。例如,建立一個基礎模板
base.html
:<!DOCTYPE html> <html> <head> <title>{% block title %}My Site{% endblock %}</title> </head> <body> {% block content %} {% endblock %} </body> </html>
子模板可以繼承並覆蓋父模板的內容:
{% extends 'base.html' %} {% block title %}Product List{% endblock %} {% block content %} <ul> {% for product in products %} <li>{{ product.name }}</li> {% endfor %} </ul> {% endblock %}
-
過濾器:Django提供了許多內建的過濾器,用於對資料進行處理和格式化。例如,將日期格式化為
YYYY-MM-DD
:<p>{{ product.created_at|date:"Y-m-d" }}</p>
-
標籤:Django模板標籤用於控制模板的邏輯流程,如if語句、for迴圈等。例如,使用if標籤根據條件顯示不同內容:
{% if product.price > 100 %} <p>Expensive</p> {% else %} <p>Affordable</p> {% endif %}
模板層是將動態資料呈現給使用者的重要部分,模板繼承、過濾器和標籤的靈活運用可以使模板更具可複用性和可維護性,同時提升使用者體驗。
第六章:路由與URL配置
URLconf的概念和作用:
URLconf(URL configuration)是Django中用於配置URL模式和檢視函式對映關係的機制。它定義了使用者訪問網站時不同URL路徑應該由哪個檢視函式來處理。URLconf通常由專案級別的URLconf和應用級別的URLconf組成,透過URL模式來匹配使用者請求的URL,並將其分發給相應的檢視函式處理。
配置URL模式和檢視函式的對映關係:
-
專案級別URLconf:在專案的
urls.py
檔案中配置專案級別的URL模式。from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('products/', include('products.urls')), ]
-
應用級別URLconf:在應用的
urls.py
檔案中配置應用級別的URL模式,並指定對應的檢視函式。from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('product/<int:product_id>/', views.product_detail, name='product_detail'), ]
-
檢視函式:在應用的
views.py
檔案中編寫檢視函式來處理使用者請求,並返回相應的響應。from django.shortcuts import render from django.http import HttpResponse from .models import Product def index(request): return render(request, 'index.html') def product_detail(request, product_id): product = Product.objects.get(id=product_id) return render(request, 'product_detail.html', {'product': product})
正規表示式在URL配置中的應用:
在URLconf中,可以使用正規表示式來匹配更復雜的URL模式,以滿足特定的路由需求。例如,使用正規表示式匹配特定格式的商品ID:
from django.urls import path
from . import views
urlpatterns = [
path('product/(?P<product_id>\d+)/', views.product_detail, name='product_detail'),
]
在上面的例子中,(?P<product_id>\d+)
部分使用了正規表示式,匹配一個或多個數字作為商品ID,並將匹配到的內容作為product_id
引數傳遞給檢視函式。
正規表示式的靈活性使得我們可以更精確地定義URL模式,實現更復雜的路由規則,從而提高網站的靈活性和可擴充套件性。
第七章:Admin後臺管理
Django提供的Admin後臺管理功能:
Django提供了強大的Admin後臺管理功能,可以讓開發者方便地管理網站的資料,包括對資料庫中的模型進行增刪改查操作。Admin後臺管理介面自動生成,可以自定義顯示的欄位、過濾器、搜尋框等,同時也提供了許可權管理功能,可以控制不同使用者的訪問許可權。
自定義Admin後臺介面:
-
註冊模型到Admin後臺:在應用的
admin.py
檔案中註冊需要管理的模型。from django.contrib import admin from .models import Product admin.site.register(Product)
-
自定義Admin後臺顯示:可以透過在模型的Admin類中定義
list_display
、list_filter
、search_fields
等屬性來自定義Admin後臺介面的顯示。from django.contrib import admin from .models import Product @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_display = ('name', 'price', 'stock') list_filter = ('category',) search_fields = ('name', 'description')
在Admin後臺管理資料庫中的資料:
- 登入Admin後臺:在瀏覽器中訪問
/admin
路徑,並使用超級使用者賬號登入。 - 檢視資料:在Admin後臺介面中,可以看到註冊的模型,點選進入相應的模型管理頁面,可以檢視、新增、編輯、刪除資料庫中的資料。
- 新增資料:在模型管理頁面中,點選“Add”按鈕,填寫相應欄位的數值,然後儲存即可新增資料。
- 編輯資料:在模型管理頁面中,點選資料行右側的“Change”按鈕,修改相應欄位的數值,然後儲存即可編輯資料。
- 刪除資料:在模型管理頁面中,勾選要刪除的資料行左側的核取方塊,然後點選頁面底部的“Delete selected”按鈕,確認刪除即可刪除資料。
透過Admin後臺管理功能,開發者可以方便地管理資料庫中的資料,快速進行資料的增刪改查操作,提高開發效率和管理便利性。
第八章:表單處理與驗證
Django表單的概念和作用:
在Web開發中,表單是使用者與網站進行互動的重要方式,使用者可以透過表單向網站提交資料。Django的表單功能可以幫助開發者快速建立表單、處理使用者提交的資料,並進行驗證。表單類定義了表單的欄位和驗證規則,可以在前端頁面渲染表單,接收使用者輸入的資料,然後進行處理和驗證。
建立表單類和處理使用者提交的表單資料:
-
建立表單類:在Django應用中的
forms.py
檔案中定義表單類,繼承自forms.Form
或forms.ModelForm
。from django import forms class ContactForm(forms.Form): name = forms.CharField(label='Your Name', max_length=100) email = forms.EmailField(label='Your Email') message = forms.CharField(widget=forms.Textarea)
-
渲染表單到前端頁面:在檢視函式中例項化表單類,並傳遞給前端頁面進行渲染。
from django.shortcuts import render from .forms import ContactForm def contact_view(request): form = ContactForm() return render(request, 'contact.html', {'form': form})
-
處理使用者提交的表單資料:在檢視函式中透過
POST
請求獲取使用者提交的資料,例項化表單類並傳入request.POST
,然後進行資料驗證和處理。def contact_view(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): # 處理有效的表單資料 else: # 處理表單驗證失敗的情況 else: form = ContactForm() return render(request, 'contact.html', {'form': form})
表單驗證和錯誤處理的方法:
- 表單驗證:Django的表單類提供了各種欄位驗證器,可以在欄位定義時設定驗證規則,也可以在表單類中定義
clean_<field_name>()
方法進行自定義驗證。 - 錯誤處理:在前端頁面中可以透過
{{ form.field_name.errors }}
顯示欄位驗證錯誤資訊,也可以透過{{ form.non_field_errors }}
顯示錶單級別的錯誤資訊。在檢視函式中,可以透過form.errors
獲取所有錯誤資訊。
透過Django的表單處理與驗證功能,開發者可以輕鬆建立表單、處理使用者提交的資料,並進行有效的資料驗證和錯誤處理,保證使用者輸入的資料符合要求,提高網站的安全性和使用者體驗。
第九章:使用者認證與許可權控制
Django中使用者認證和許可權控制的機制:
Django框架內建了一套使用者認證系統,提供了使用者註冊、登入、登出、許可權控制等功能。使用者認證系統主要包括User模型、使用者組(Groups)、許可權(Permissions)等概念。
- User模型:Django內建的
User
模型定義了使用者的基本資訊,如使用者名稱、密碼、郵箱等。可以透過django.contrib.auth.get_user_model()
獲取使用者模型,以便在應用中使用。 - 使用者註冊:透過定義一個表單類來處理使用者註冊時提交的資料,然後在檢視函式中例項化該表單,並驗證使用者輸入的資料。註冊成功後,可以將使用者資料儲存到資料庫中。
- 使用者登入:登入過程包括驗證使用者名稱和密碼。Django提供了
authenticate()
函式來驗證使用者身份,驗證成功後,可以使用login()
函式將使用者登入狀態儲存在會話(Session)中。 - 使用者登出:使用者登出功能可以透過
logout()
函式實現,該函式會清除使用者會話中的資訊,從而結束使用者的登入狀態。 - 許可權控制:Django透過使用者、使用者組、許可權三者之間的關係來實現許可權控制。許可權分為物件許可權和組許可權,使用者可以透過加入使用者組來獲得組許可權,也可以直接分配物件許可權。
如何實現使用者註冊、登入和登出功能:
- 使用者註冊:建立一個登錄檔單,並在檢視函式中處理表單提交的資料,驗證無誤後儲存使用者資訊到資料庫,並建立使用者會話。
- 使用者登入:建立一個登入表單,並在檢視函式中處理表單提交的資料,驗證使用者身份後使用
login()
函式儲存登入狀態。 - 使用者登出:在檢視函式中實現登出邏輯,呼叫
logout()
函式清除會話資訊。
如何管理使用者許可權和角色:
- 使用者組管理:透過Django的管理介面可以建立和管理使用者組,併為使用者分配組成員身份。
- 許可權分配:在Django中,許可權可以透過模型許可權和中介軟體許可權兩種方式進行分配。模型許可權關聯到Django的模型上,中介軟體許可權是全域性的許可權,可以被特定的使用者或使用者組繼承。
- 許可權驗證:在檢視函式中,可以透過
has_perm()
方法來檢查使用者是否有執行某操作的許可權,也可以在模板中透過{% if user.has_perm('app_label.model_name') %}
來判斷許可權。
透過Django的使用者認證與許可權控制機制,開發者可以為網站提供安全、靈活的使用者管理方案,確保只有授權使用者才能訪問特定的資源和操作,從而保護網站的資料和功能安全。
第十章:RESTful API開發
RESTful API的概念和設計原則:
REST(Representational State Transfer)是一種設計風格,用於構建分散式系統和網路應用。RESTful API是符合REST架構風格的API,具有以下設計原則:
- 基於資源:將資料和功能看作資源,每個資源透過唯一的URL進行標識。
- 統一介面:使用統一的介面進行互動,如HTTP方法(GET、POST、PUT、DELETE等)。
- 無狀態性:每個請求都包含足夠的資訊來處理,伺服器不儲存客戶端的狀態。
- 資源關係:透過URL表示資源之間的關係,如巢狀URL表示資源之間的層級關係。
- 狀態轉移:客戶端透過操作資源的表現形式來進行狀態轉移,如GET獲取資源、POST建立資源等。
如何使用Django REST framework構建API介面:
- 安裝Django REST framework:透過pip安裝
djangorestframework
庫。 - 建立序列化器(Serializers):定義資源的序列化和反序列化規則。
- 建立檢視集(ViewSets):定義處理API請求的檢視集,包括列表、詳情、建立、更新、刪除等操作。
- 配置URL路由:將檢視集對映到URL,並配置路由。
- 配置許可權和認證:透過Django REST framework提供的許可權和認證類來控制API的訪問許可權。
API的認證、許可權控制和版本管理:
- 認證:Django REST framework提供了多種認證方式,如基本認證、Token認證、Session認證、JWT認證等。可以在檢視或全域性配置中設定認證類。
- 許可權控制:透過Django REST framework提供的許可權類來控制使用者對API資源的訪問許可權,如IsAuthenticated、IsAdminUser、AllowAny等。
- 版本管理:可以透過URL版本控制或Accept頭部版本控制來管理API的版本。在Django REST framework中,可以使用
rest_framework.versioning
模組來實現版本管理。
透過使用Django REST framework構建RESTful API,可以快速、靈活地開發API介面,提供給前端應用或第三方服務使用。同時,透過認證、許可權控制和版本管理,可以確保API的安全性和穩定性,為使用者提供良好的使用體驗。
第十一章:效能最佳化與安全防護
常見的效能最佳化技巧和最佳實踐:
- 快取:使用快取可以減少資料庫查詢和計算量,提高應用的效能。可以使用Django快取框架來實現快取,如Memcached、Redis、FileBasedCache等。
- 靜態檔案:使用CDN(內容分發網路)來加速靜態檔案的訪問,減少伺服器壓力。
- 資料庫最佳化:使用資料庫索引、分表、分庫等技術來最佳化資料庫效能。
- 非同步處理:將一些耗時的操作放到非同步佇列中處理,避免阻塞主執行緒。
- 程式碼最佳化:使用Django除錯工具和Python profiler來分析程式碼的效能瓶頸,進行最佳化。
防範常見的Web安全攻擊:
- SQL隱碼攻擊:使用引數化查詢和預編譯語句來防止SQL隱碼攻擊。
- XSS:使用Django的安全過濾器和CSP(內容安全策略)來防止XSS攻擊。
- CSRF:使用Django的CSRF保護機制來防止CSRF攻擊。
- Clickjacking:使用X-Frame-Options頭部和Frame-Ancestors CSP指令來防止Clickjacking攻擊。
- DoS/DDoS:使用流量控制和限速來防止DoS/DDoS攻擊。
對Django應用進行效能測試和安全審計:
- 效能測試:使用Django除錯工具和Python profiler來分析程式碼的效能瓶頸,進行最佳化。可以使用Apache Benchmark(ab)、Locust等工具來進行效能測試。
- 安全審計:使用Django的安全過濾器和Python安全工具庫來檢查程式碼的安全性,進行修復。可以使用OWASP ZAP、Burp Suite等工具來進行安全審計。
透過對Django應用進行效能最佳化和安全防護,可以確保應用的高效能和安全性,為使用者提供良好的使用體驗。同時,透過定期的效能測試和安全審計,可以及時發現和修復潛在的問題,提高應用的穩定性和可靠性。
附錄:常見問題解答和進階學習資源
AD:首頁 | 一個覆蓋廣泛主題工具的高效線上平臺(amd794.com)
常見問題解答:
- Q:如何處理Django中的大檔案上傳? A:可以使用Django的FileField配合如
django-storages
庫(如Amazon S3、Google Cloud Storage等)處理大檔案儲存。 - Q:如何在Django中實現使用者許可權管理? A:使用Django的內建許可權系統(如
permissions
模組)或第三方庫如django-guardian
進行更細粒度的許可權控制。 - Q:如何處理資料庫遷移問題? A:確保每次改動資料庫結構後,使用
makemigrations
、migrate
和syncdb
正確地更新遷移檔案,並在生產環境中使用--fake
選項模擬遷移。
進階學習資源:
-
書籍:
Pro Django: Expert Solutions for Real-World Django Development
Django for Beginners: A Hands-On Guide to Mastering Django 3.x
Django 3.2 Unofficial Documentation
-
線上課程:
- Django官方文件(https://docs.djangoproject.com/)
- Udemy上的《Django 3.x - The Complete Guide for Beginners》
- Coursera上的《Full Stack Web Development with Django》
-
部落格和社群:
- Django Bloggers(https://djangobloggers.com/)
- Django Documentation's Blog(https://www.djangoproject.com/weblog/)
- Django Girls(https://djangogirls.org/)
-
GitHub專案和庫:
- Django官方示例專案(https://github.com/django/django/tree/main/django/contrib/samples)
- Django-CRUD-App(https://github.com/AndrewIngram/django-crud-app)
-
技術論壇和問答平臺:
- Django官方論壇(https://forum.djangoproject.com/)
- Stack Overflow(https://stackoverflow.com/questions/tagged/django)