在Django框架中實現前后端分離通常涉及以下幾個步驟:
首先,確保你的Django項目結構清晰,便于管理和擴展。一個典型的Django項目結構如下:
myproject/
manage.py
myproject/
__init__.py
settings.py
urls.py
wsgi.py
apps/
myapp/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
urls.py
templates/
myapp/
index.html
detail.html
static/
myapp/
css/
js/
images/
在settings.py
中配置靜態文件的路徑:
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / "static"]
你可以創建一個新的Django應用來處理前端邏輯。例如,創建一個名為frontend
的應用:
python manage.py startapp frontend
在frontend/static/
目錄下創建HTML、CSS和JavaScript文件。例如,在index.html
中編寫前端頁面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Frontend</title>
<link rel="stylesheet" href="{% static 'css/main.css' %}">
</head>
<body>
<h1>Welcome to Frontend</h1>
<script src="{% static 'js/main.js' %}"></script>
</body>
</html>
在frontend/urls.py
中配置前端應用的URL:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
在myproject/urls.py
中包含前端應用的URL:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('myapp.urls')),
path('', include('frontend.urls')),
]
在myapp/views.py
中編寫后端視圖:
from django.http import JsonResponse
def index(request):
data = {'message': 'Hello from backend'}
return JsonResponse(data)
在myapp/urls.py
中配置后端視圖的URL:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
啟動Django開發服務器:
python manage.py runserver
現在,你可以通過訪問http://127.0.0.1:8000/
來查看前端頁面,并通過訪問http://127.0.0.1:8000/api/
來與后端API進行交互。
你可以使用JavaScript(例如使用Fetch API)來與后端API進行交互:
fetch('/api/')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
通過以上步驟,你可以在Django框架中實現前后端分離。前端使用HTML、CSS和JavaScript構建用戶界面,后端提供API接口供前端調用。