在這篇文章中,我將手把手地教你如何從零開始部署一個使用Django框架的Python服務。無論你是一個剛開始接觸開發的新手,還是一個有經驗的開發者想要快速瞭解Django,這篇教學都會為你提供一條清晰的路徑。我們將從環境搭建開始,一步一步地建立一個可以處理GET和POST請求的服務,讓你能在實踐中理解Django的工作原理。
首先,我們需要建立一個適合開發的環境。在Python開發中,我們通常會使用虛擬環境來保持工作空間的整潔。以下是建立和啟用虛擬環境的步驟:
# 建立虛擬環境
python3 -m venv myenv
# 啟用虛擬環境(Linux/macOS)
source myenv/bin/activate
# 啟用虛擬環境(Windows)
.\myenv\Scripts\activate
在虛擬環境中,我們可以安裝Django:
pip install Django
這將會安裝Django並且保證它不會影響到系統中的其他Python專案。
安裝完成後,我們可以使用Django的命令列工具來建立一個新的專案:
django-admin startproject myproject
這將會在當前目錄下建立一個名為myproject
的資料夾,其中包含了管理Django專案所需的一些檔案。
在Django中,一個專案可以包含多個應用,每個應用都是一個Python模組,包含了檢視、模型、模板、路由等一系列功能。我們首先建立一個名為myapp
的應用:
cd myproject
python manage.py startapp myapp
這會在myproject
目錄下建立一個myapp
的目錄,包含了管理應用所需的一些檔案。
接下來,我們需要定義檢視來處理HTTP請求。在myapp/views.py
檔案中,我們可以定義一個檢視來處理GET和POST請求:
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def hello(request):
if request.method == 'GET':
return JsonResponse({'message': 'Hello, Django!'})
elif request.method == 'POST':
return JsonResponse({'message': 'POST request received.'})
這裡,我們使用了JsonResponse
來返回JSON響應,用@csrf_exempt
來豁免CSRF保護,以便於我們在測試時能方便地傳送POST請求。
檢視定義完成後,我們還需要設定路由來將URL對映到檢視。在myapp/urls.py
檔案中,我們可以定義路由:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello),
]
然後,在myproject/urls.py
檔案中,我們需要包含myapp
的路由:
from django.urls import include, path
urlpatterns = [
path('myapp/', include('myapp.urls')),
]
這樣,存取/myapp/hello/
URL時,就會呼叫我們定義的hello
檢視。
最後,我們可以啟動Django服務來測試我們的應用:
python manage.py runserver
現在,你可以使用瀏覽器存取http://localhost:8000/myapp/hello/
,你將看到返回的{"message": "Hello, Django!"}
。你也可以使用工具(如curl或Postman)傳送POST請求,你將看到返回的{"message": "POST request received."}
。
恭喜你!你已經成功地從零開始部署了一個使用Django框架的Python服務。
最後提供給大家,在我們的Django專案中,我們會看到以下檔案結構:
myproject/
├── manage.py
├── myapp/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations/
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── myproject/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
在這個結構中,我們主要關注的是myapp/views.py
,myapp/urls.py
,和myproject/urls.py
這三個檔案,因為這三個檔案是我們在部署Django服務中修改的主要檔案。
在myapp/views.py
檔案中,我們定義了一個hello
檢視來處理GET和POST請求。完整的程式碼如下:
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def hello(request):
if request.method == 'GET':
return JsonResponse({'message': 'Hello, Django!'})
elif request.method == 'POST':
return JsonResponse({'message': 'POST request received.'})
在myapp/urls.py
檔案中,我們定義了一個路由來將/hello/
的URL對映到hello
檢視。如果檔案不存在,請建立並新增以下內容:
from django.urls import path
from . import views
urlpatterns = [
path('hello/', views.hello),
]
在myproject/urls.py
檔案中,我們包含了myapp
的路由,將所有以/myapp/
開頭的URL對映到myapp
的路由。完整的程式碼如下:
from django.urls import include, path
urlpatterns = [
path('myapp/', include('myapp.urls')),
]
以上便是我們建立的Django服務的全部程式碼和檔案結構。
如有幫助,請多關注
個人微信公眾號:【Python全視角】
TeahLead_KrisChang,10+年的網際網路和人工智慧從業經驗,10年+技術和業務團隊管理經驗,同濟軟體工程本科,復旦工程管理碩士,阿里雲認證雲服務資深架構師,上億營收AI產品業務負責人。