Django REST Framework 安装与配置 #
一、环境要求 #
1.1 系统要求 #
在开始安装之前,请确保你的系统满足以下要求:
| 要求 | 版本 |
|---|---|
| Python | 3.8+ |
| Django | 4.2+ |
| pip | 最新版本 |
1.2 检查Python版本 #
bash
python --version
# 输出: Python 3.11.x
1.3 检查pip版本 #
bash
pip --version
# 输出: pip 24.x from ...
二、安装步骤 #
2.1 创建虚拟环境 #
推荐使用虚拟环境隔离项目依赖:
bash
# 使用 venv 创建虚拟环境
python -m venv drf-env
# 激活虚拟环境
# macOS/Linux
source drf-env/bin/activate
# Windows
drf-env\Scripts\activate
2.2 安装Django和DRF #
bash
# 安装 Django
pip install django
# 安装 Django REST Framework
pip install djangorestframework
# 安装其他常用依赖
pip install django-filter # 过滤支持
pip install markdown # Markdown支持(API文档)
pip install pillow # 图片处理
2.3 验证安装 #
bash
# 验证 Django 安装
python -c "import django; print(django.VERSION)"
# 输出: (4, 2, 0, 'final', 0)
# 验证 DRF 安装
python -c "import rest_framework; print(rest_framework.VERSION)"
# 输出: 3.15.0
三、创建项目 #
3.1 创建Django项目 #
bash
# 创建项目
django-admin startproject myapi
# 进入项目目录
cd myapi
# 创建应用
python manage.py startapp api
3.2 项目目录结构 #
text
myapi/
├── manage.py
├── myapi/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── api/
├── __init__.py
├── admin.py
├── apps.py
├── migrations/
├── models.py
├── tests.py
└── views.py
3.3 注册应用 #
编辑 myapi/settings.py:
python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 第三方应用
'rest_framework',
'django_filters',
# 本地应用
'api',
]
四、DRF配置 #
4.1 基础配置 #
在 settings.py 中添加DRF配置:
python
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
],
}
4.2 认证配置 #
python
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.BasicAuthentication',
],
}
4.3 权限配置 #
python
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
}
4.4 分页配置 #
python
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
}
4.5 完整配置示例 #
python
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_FILTER_BACKENDS': [
'django_filters.rest_framework.DjangoFilterBackend',
'rest_framework.filters.SearchFilter',
'rest_framework.filters.OrderingFilter',
],
'DEFAULT_THROTTLE_CLASSES': [
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle',
],
'DEFAULT_THROTTLE_RATES': {
'anon': '100/day',
'user': '1000/day',
},
}
五、数据库配置 #
5.1 SQLite(默认) #
Django默认使用SQLite:
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
5.2 PostgreSQL #
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}
5.3 MySQL #
python
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}
六、URL配置 #
6.1 配置主URL #
编辑 myapi/urls.py:
python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls')),
path('api/', include('api.urls')),
]
6.2 创建应用URL #
创建 api/urls.py:
python
from django.urls import path
from . import views
urlpatterns = [
path('articles/', views.ArticleList.as_view()),
path('articles/<int:pk>/', views.ArticleDetail.as_view()),
]
七、数据库迁移 #
7.1 创建迁移文件 #
bash
python manage.py makemigrations
7.2 执行迁移 #
bash
python manage.py migrate
7.3 创建超级用户 #
bash
python manage.py createsuperuser
八、开发服务器 #
8.1 启动服务器 #
bash
python manage.py runserver
8.2 指定端口 #
bash
python manage.py runserver 8080
8.3 允许外部访问 #
bash
python manage.py runserver 0.0.0.0:8000
九、常用依赖包 #
9.1 认证相关 #
bash
# JWT认证
pip install djangorestframework-simplejwt
# OAuth认证
pip install django-oauth-toolkit
9.2 文档相关 #
bash
# OpenAPI文档
pip install drf-spectacular
# Swagger UI
pip install drf-yasg
9.3 其他工具 #
bash
# CORS支持
pip install django-cors-headers
# 图片处理
pip install pillow
# 数据库连接池
pip install django-db-connection-pool
十、requirements.txt #
创建 requirements.txt 文件:
text
Django>=4.2
djangorestframework>=3.15
django-filter>=23.0
markdown>=3.5
pillow>=10.0
django-cors-headers>=4.3
djangorestframework-simplejwt>=5.3
drf-spectacular>=0.27
安装所有依赖:
bash
pip install -r requirements.txt
十一、环境变量配置 #
11.1 安装python-dotenv #
bash
pip install python-dotenv
11.2 创建.env文件 #
text
DEBUG=True
SECRET_KEY=your-secret-key-here
DATABASE_URL=postgres://user:password@localhost:5432/mydb
ALLOWED_HOSTS=localhost,127.0.0.1
11.3 在settings.py中使用 #
python
import os
from dotenv import load_dotenv
load_dotenv()
SECRET_KEY = os.getenv('SECRET_KEY')
DEBUG = os.getenv('DEBUG', 'False') == 'True'
ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS', '').split(',')
十二、验证安装 #
12.1 创建测试视图 #
在 api/views.py 中:
python
from rest_framework.response import Response
from rest_framework.views import APIView
class HelloWorld(APIView):
def get(self, request):
return Response({'message': 'Hello, DRF!'})
12.2 配置URL #
在 api/urls.py 中:
python
from django.urls import path
from .views import HelloWorld
urlpatterns = [
path('hello/', HelloWorld.as_view()),
]
12.3 测试API #
启动服务器后访问:
bash
# 浏览器访问
http://127.0.0.1:8000/api/hello/
# 或使用curl
curl http://127.0.0.1:8000/api/hello/
输出:
json
{
"message": "Hello, DRF!"
}
十三、常见问题 #
13.1 模块未找到 #
bash
ModuleNotFoundError: No module named 'rest_framework'
解决方案:确保已安装DRF并在虚拟环境中:
bash
pip install djangorestframework
13.2 应用未注册 #
bash
django.core.exceptions.ImproperlyConfigured: ...
解决方案:确保在 INSTALLED_APPS 中添加了 rest_framework。
13.3 数据库迁移错误 #
bash
python manage.py migrate --run-syncdb
十四、总结 #
本章我们完成了:
- DRF的安装和环境配置
- Django项目的创建和配置
- DRF的基础设置
- 数据库配置
- 开发服务器的启动
现在你已经有了完整的DRF开发环境,让我们进入下一章,创建第一个API!
最后更新:2026-03-28