

下面是从零开始开发 Django 项目的完整步骤,包括环境设置、项目配置、Django REST framework (DRF) 的准备工作,以及跨域资源共享 (CORS) 的配置
一、环境设置
1.1 创建虚拟环境
使用 Python 的虚拟环境工具隔离项目的依赖:
1 | python -m venv venv |
1.2 安装 Django 和 Django REST framework
安装 Django 和 Django REST framework(DRF):
1 | pip install django djangorestframework |
1.3 安装 CORS 支持库
安装 django-cors-headers 库以支持跨域资源共享 (CORS):
1 | pip install django-cors-headers |
1.4 保存依赖项
将依赖项保存到 requirements.txt 文件中,方便后续管理和部署:
1 | pip freeze > requirements.txt |
二、项目配置
2.1 创建 Django 项目
使用 Django 的命令行工具创建新的项目:
1 | django-admin startproject myproject |
2.2 创建 Django 应用
在项目目录下创建应用(例如 myapp):
1 | cd myproject |
Django项目目录结构

2.3 配置项目设置
在 settings.py 中添加应用和 DRF
1 | INSTALLED_APPS = [ |
2.4 配置中间件以启用 CORS
在 settings.py 中的 MIDDLEWARE 列表中添加 corsheaders.middleware.CorsMiddleware:
1 | MIDDLEWARE = [ |
2.5 配置 CORS 设置
在 settings.py 中添加 CORS 配置:
1 | CORS_ALLOWED_ORIGINS = [ |
2.6 设置数据库(默认是 SQLite,可以根据需要修改):
1 | DATABASES = { |
2.7 配置静态文件
如有必要):’DIRS’: [Path(BASE_DIR, ‘templates’)],
1 | STATIC_URL = '/static/' |
2.8 配置媒体文件(如果需要上传文件):
1 | MEDIA_URL = '/media/' |
2.9 设置语言和时区(根据需要):
1 | # 将 LANGUAGE_CODE 改为中文 |
2.10 准备 Django REST framework
配置 DRF,在 settings.py 中添加 DRF 的配置(如果有特定需求):
1 | REST_FRAMEWORK = { |
三、编写后端代码
3.1 创建模型
在 myapp/models.py 中定义数据模型:
1 | from django.db import models |
3.2 创建序列化器
在 myapp/serializers.py 中定义序列化器:
1 | from rest_framework import serializers |
3.3 创建视图集
在 myapp/views.py 中定义视图集:
1 | from rest_framework import viewsets |
3.4 配置 URL 路由
在 myapp/urls.py 中配置应用的 URL 路由:
1 | from django.urls import path, include |
这个配置将为 Word 模型提供以下 API 端点
- GET /words/:获取所有 Word 对象的列表。
- GET /words/{id}/:获取特定 Word 对象的详细信息。
- POST /words/:创建一个新的 Word 对象。
- PUT /words/{id}/:更新特定 Word 对象的全部字段。
- PATCH /words/{id}/:部分更新特定 Word 对象的字段。
- DELETE /words/{id}/:删除特定 Word 对象。
3.5 在项目的 myproject/urls.py 中包含应用的 URL 路由:
1 | from django.contrib import admin |
五、数据库初始化和开发
5.1 创建数据库表
执行迁移命令以创建数据库结构:
1 | python manage.py makemigrations |
5.2 创建超级用户
创建一个超级用户来访问 Django 管理后台:
1 | python manage.py createsuperuser |
5.3 启动开发服务器
启动 Django 开发服务器进行本地开发和测试:
1 | python manage.py runserver |
通过这些步骤,你可以设置一个 Django 项目,启用Django REST framework进行API开发,并配置跨域资源共享 (CORS) 以允许来自不同源的请求。这将帮助你构建一个功能全面、跨域兼容的应用程序。
六、Django admin后台配置的常用配置
1 | #app/admin.py |
七、其他
7.1 关于json,记住两个常用函数
json.loads 用于将 JSON 格式的字符串转换为 Python 对象。
json.dumps 用于将 Python 对象转换为 JSON 格式的字符串。
json.loads 和 json.dumps 是 Python 的 json 模块中的两个核心函数,用于处理 JSON 数据。它们有不同的用途:
json.loads
- 功能:将 JSON 格式的字符串解析为 Python 对象(如字典、列表)。
- 用法:
1
2
3
4
5import json
json_string = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_string)
print(data)
# 输出: {'name': 'John', 'age': 30, 'city': 'New York'}
json.dumps
将 Python 对象转换为 JSON 格式的 字符串。
用法:
1 | import json |
参数:
obj:要转换为 JSON 的 Python 对象。
indent:用于缩进格式化输出,使 JSON 更易读。
ensure_ascii:如果为 False,则允许输出非 ASCII 字符(如中文)。
7.2 限流设置:
#限流设置 settings.py全局设置限流访问
1 | 'DEFAULT_THROTTLE_CLASSES': [ |
如果你是匿名用户,当你的每分钟请求数量累计达到2次时,你将看到如下返回信息。如果你是认证用户,你的每分钟请求数量达到10次时才会被限流。
局部设置限流
1 | REST_FRAMEWORK = { |
AnonRateThrottle和UserRateThrottle类都是针对单个用户请求进行限流的,而ScopeRateThrottle类是针对不同API接口资源进行限流的,限制的是所有用户对接口的访问总数之和。使用时直接在视图类里通过throttle_scope 属性指定限流范围(scope), 然后在settings.py对不同scope设置限流频率。
例子如下所示:
1 | class ArticleListView(APIView): |
针对不同api接口设置不同限流频率。如下配置代表文章资源列表一天限1000次请求(所有用户访问数量之和),文章详情接口限1小时100次。
1 | REST_FRAMEWORK = { |