news 2026/4/18 9:19:21

Django REST Framework项目最佳实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django REST Framework项目最佳实践

Django REST Framework(DRF)是构建高质量 Web API 的强大工具,但初学者常因项目结构混乱、配置冗余或缺乏规范而难以发挥其全部潜力。本文提供了一个小但完整的 DRF 示例项目,旨在展示现代 Django API 开发中推荐的组织方式与工程实践。

一、项目结构

最终项目目录结构如下:

myproject/ ├── venv/ # 虚拟环境 ├── requirements.txt # 依赖清单 ├── manage.py ├── myproject/ │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── myapp/ │ ├── __init__.py │ ├── models.py # 数据模型 │ ├── serializers.py # 序列化器 │ ├── views.py # 视图逻辑 │ ├── parsers.py # JSONL 解析函数 │ ├── urls.py # 应用路由 │ ├── tests.py # 单元测试 │ └── static/ # 本地图片(实际可能在云端) │ └── images/ │ ├── img1.jpg │ └── img2.png └── api.http # HTTP 接口测试文件

二、环境准备与依赖安装

1. 创建项目目录并进入

django-admin startproject myprojectcdmyproject

2. 创建虚拟环境

python -m venv venvsourcevenv/bin/activate# Linux/macOS# source venv\Scripts\activate # Windows bash

3. 安装依赖

创建requirements.txt文件:

Django==5.2 djangorestframework==3.16.0

安装:

pipinstall-r requirements.txt

4. 创建应用

python manage.py startapp myapp

三、配置

编辑myproject/settings.py

frompathlibimportPath BASE_DIR=Path(__file__).resolve().parent.parent SECRET_KEY='django-insecure-z1*txrg&y@f^for5@+&8%3pq)^i&by!*riz9i=837=n(pdbyfh'DEBUG=TrueALLOWED_HOSTS=[]INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp.apps.MyappConfig','rest_framework','rest_framework.authtoken',# 启用 Token 认证]MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]ROOT_URLCONF='myproject.urls'TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[BASE_DIR/'templates'],'APP_DIRS':True,'OPTIONS':{'context_processors':['django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},]WSGI_APPLICATION='myproject.wsgi.application'DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':BASE_DIR/'db.sqlite3',}}AUTH_PASSWORD_VALIDATORS=[{'NAME':'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME':'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME':'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME':'django.contrib.auth.password_validation.NumericPasswordValidator',},]LANGUAGE_CODE='en-us'TIME_ZONE='UTC'USE_I18N=TrueUSE_TZ=TrueSTATIC_URL='static/'# DRF 配置REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':['rest_framework.authentication.TokenAuthentication',],'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.IsAuth
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 8:53:44

3个颠覆认知的ncmdump使用技巧:让NCM格式音乐重获自由

3个颠覆认知的ncmdump使用技巧:让NCM格式音乐重获自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐收藏日益丰富的今天,网易云音乐的NCM加密格式却成为许多音乐爱好者的困扰。ncmdump作为一款开…

作者头像 李华
网站建设 2026/4/17 13:57:33

智能的本质既不是学习也不是推理,更不是预测,而是……

智能的本质既不是学习也不是推理,更不是预测,而是事实与价值的统筹。智能的本质问题常常触及了智能最核心也最容易被忽视的维度——规范性(Normativity),即如何处理“应然”(价值)与“实然”&am…

作者头像 李华
网站建设 2026/4/18 8:06:09

基于51单片机与LCD12864的贪吃蛇游戏开发实战(附源码+仿真)

1. 项目背景与硬件选型 第一次用51单片机做游戏开发时,我对着12864液晶屏发呆了整整三天。这块巴掌大的屏幕能跑贪吃蛇?事实证明不仅能跑,还能玩出花样。STC89C51这颗老当益壮的芯片,配合12864点阵的LCD,构成了这个项目…

作者头像 李华
网站建设 2026/4/18 4:02:02

系统清理工具: 解决磁盘空间不足的轻量级技术解决方案

系统清理工具: 解决磁盘空间不足的轻量级技术解决方案 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 随着计算机使用时间的增加,系统磁盘空间逐渐被临…

作者头像 李华
网站建设 2026/4/18 4:00:12

突破游戏操作瓶颈:专业键盘输入管理工具助力竞技表现全面提升

突破游戏操作瓶颈:专业键盘输入管理工具助力竞技表现全面提升 【免费下载链接】socd SOCD cleaner tool for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 在快节奏的游戏对抗中,0.1秒的操作延迟或一次按键冲突都可能让你错失致…

作者头像 李华