当前位置: 首页 > wzjs >正文

网站模块结构图第三方推广平台

网站模块结构图,第三方推广平台,wordpress图片轮播插件下载,肇庆网站设计原生Django实现学生管理API需要200行代码,而DRF仅需20行!揭秘如何用序列化器提升10倍开发效率。 目录 一、Web应用模式演进 1.1 前后端不分离 1.2 前后端分离 二、API接口规范之争 2.1 RPC(远程过程调用) 2.2 RESTful&…

        原生Django实现学生管理API需要200+行代码,而DRF仅需20行!揭秘如何用序列化器提升10倍开发效率。

目录

一、Web应用模式演进

1.1 前后端不分离

1.2 前后端分离

二、API接口规范之争

2.1 RPC(远程过程调用)

2.2 RESTful(表征状态转移)

核心原则:

幂等性保证:

三、DRF核心:序列化器

3.1 序列化器的作用

序列化:模型对象 → Python字典 → JSON

反序列化:JSON → Python字典 → 模型对象

3.2 定义序列化器

3.3 常用字段类型速查

四、DRF环境配置实战

4.1 安装与配置

4.2 项目配置

4.3 模型定义

五、DRF极简开发模式

5.1 模型序列化器

5.2 视图集配置

5.3 路由配置

5.4 接口测试效果

六、高级序列化技巧

6.1 自定义验证

6.2 重写创建/更新

6.3 只读/只写字段

七、DRF核心优势总结


一、Web应用模式演进

1.1 前后端不分离

  • 服务端主导:后端直接生成HTML/CSS/JS

  • 工作流程

graph LR
A[浏览器请求] --> B[应用服务器]
B --> C[数据库查询]
C --> D[模板渲染]
D --> E[返回HTML]

1.2 前后端分离

  • 核心解耦

    • 前端:独立静态资源服务(HTML/CSS/JS)

    • 后端:纯数据接口(JSON/XML)

  • 数据交互流程

graph LR
浏览器 --> |请求HTML| 静态服务器
浏览器 --> |请求数据| 应用服务器
应用服务器 --> 数据库
静态服务器 --> |返回文件| 浏览器
应用服务器 --> |返回JSON| 浏览器

二、API接口规范之争

2.1 RPC(远程过程调用)

  • 特点

    • 单一入口:http://api.xxx.com/

    • POST请求为主

    • 参数指定动作:action=get_students&class=301

    • 数据格式:Protobuf/JSON/XML

  • 痛点

    • 接口命名混乱

    • 函数参数膨胀

    • 历史接口重复

2.2 RESTful(表征状态转移)

  • 核心原则

    • 资源即名词:/students//avatars/

    • HTTP动词定义操作:

    HTTP方法端点动作
    POST/students/创建学生
    GET/students/获取所有学生
    GET/students/<pk>/获取单个学生
    PUT/students/<pk>/全量更新
    PATCH/students/<pk>/部分更新
    DELETE/students/<pk>/删除学生
  • 幂等性保证

    方法幂等安全
    GET
    POST
    PUT/PATCH
    DELETE

三、DRF核心:序列化器

3.1 序列化器的作用

序列化:模型对象 → Python字典 → JSON

student = Student.objects.get(id=1)
serializer = StudentSerializer(student)
return JsonResponse(serializer.data)

反序列化:JSON → Python字典 → 模型对象

data = request.data
serializer = StudentSerializer(data=data)
if serializer.is_valid():serializer.save()  # 保存到数据库

3.2 定义序列化器

from rest_framework import serializersclass StudentSerializer(serializers.Serializer):id = serializers.IntegerField(read_only=True)name = serializers.CharField(max_length=100)sex = serializers.BooleanField(default=True)age = serializers.IntegerField(min_value=0)description = serializers.CharField(allow_blank=True)

3.3 常用字段类型速查

字段类型说明关键参数
CharField字符串max_length, allow_blank
EmailField邮箱格式-
IntegerField整型min_value, max_value
DateTimeField日期时间format='%Y-%m-%d %H:%M'
ChoiceField选择字段choices=((1, '男'), (0, '女'))
FileField文件上传max_length, allow_empty_file

四、DRF环境配置实战

4.1 安装与配置

# 创建虚拟环境
python -m venv drf_env
source drf_env/bin/activate# 安装依赖
pip install django==3.2.4 djangorestframework pymysql

4.2 项目配置

settings.py关键配置:

INSTALLED_APPS = [...'rest_framework','students',  # 你的应用
]DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'students','HOST': '127.0.0.1','PORT': 3306,'USER': 'root','PASSWORD': '123'}
}

 4.3 模型定义

# students/models.py
class Student(models.Model):name = models.CharField(max_length=100, verbose_name="姓名")sex = models.BooleanField(default=True, verbose_name="性别")age = models.IntegerField(verbose_name="年龄")classmate = models.CharField(max_length=5, verbose_name="班级")description = models.TextField(verbose_name="签名")class Meta:db_table = "tb_student"

五、DRF极简开发模式

5.1 模型序列化器

# students/serializers.py
from rest_framework import serializers
from .models import Studentclass StudentModelSerializer(serializers.ModelSerializer):class Meta:model = Studentfields = '__all__'  # 包含所有字段# fields = ('id', 'name', 'age')  # 指定字段# exclude = ('description',)  # 排除字段extra_kwargs = {'age': {'min_value': 0},'name': {'max_length': 50}}

5.2 视图集配置

# students/views.py
from rest_framework.viewsets import ModelViewSet
from .models import Student
from .serializers import StudentModelSerializerclass StudentViewSet(ModelViewSet):queryset = Student.objects.all()serializer_class = StudentModelSerializer

 5.3 路由配置

# students/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import StudentViewSetrouter = DefaultRouter()
router.register('students', StudentViewSet)urlpatterns = [path('', include(router.urls))
]

5.4 接口测试效果

DRF自动生成调试界面:

  • GET /students/:学生列表

  • POST /students/:创建学生

  • PUT /students/1/:更新ID=1的学生

  • DELETE /students/1/:删除学生

六、高级序列化技巧

6.1 自定义验证

class StudentSerializer(serializers.ModelSerializer):...# 字段级验证def validate_age(self, value):if value < 1:raise serializers.ValidationError("年龄不能小于1岁")return value# 对象级验证def validate(self, attrs):if attrs['age'] > 30 and attrs['classmate'] == '101':raise serializers.ValidationError("30岁以上不能加入101班")return attrs

6.2 重写创建/更新

def create(self, validated_data):# 添加额外逻辑if validated_data.get('score') > 90:validated_data['level'] = 'A'return Student.objects.create(**validated_data)def update(self, instance, validated_data):instance.name = validated_data.get('name', instance.name)...instance.save()return instance

 6.3 只读/只写字段

class UserSerializer(serializers.ModelSerializer):password = serializers.CharField(write_only=True)  # 仅用于输入last_login = serializers.DateTimeField(read_only=True)  # 仅用于输出class Meta:model = Userfields = ('username', 'password', 'last_login')

七、DRF核心优势总结

  1. 序列化器:自动处理模型↔JSON转换

  2. 视图集:5行代码实现CRUD接口

  3. 认证模块:JWT/OAuth开箱即用

  4. 调试界面:自动生成API文档

  5. 扩展生态:过滤/分页/限流插件

http://www.dtcms.com/wzjs/131285.html

相关文章:

  • 自己想弄个平台怎么弄百度推广优化怎么做
  • 做网站常用的技术有哪些英文谷歌seo
  • 用h5做的网站竞猜世界杯
  • 北京seo薪资seo的实现方式
  • 泉州免费建站安卓优化大师手机版
  • 常用素材网站直通车怎么开效果最佳
  • wordpress 没有添加主题重庆关键词优化服务
  • 如东建设网站网站推广的方式有哪些?
  • 手机建站系统源码武汉seo首页优化技巧
  • 济南营销网站制作云南网站建设快速优化
  • 今天的西安今日头条手机优化大师官网
  • 建设企业网站的品牌营销包括哪些方面
  • 91成人无码免费一区二区百度小程序排名优化
  • html5动态网站模板下载代发广告平台
  • wordpress 自定义页面模板下载seo发帖网站
  • 专业网站设计公司推荐网络营销品牌推广公司
  • 在沧州盘古做苗木网站的电话营销话术
  • 购物网站模板免费下载博客seo优化技术
  • 做影视网站规模不大百度付费推广
  • 用什么网站做cpa网站流量查询工具
  • 怎么才能申请自己的网站如何创建一个自己的网站
  • 山东网站建设报价简述网站推广的意义和方法
  • 郑州做网站公司有多少品牌设计公司
  • 公司网站建设设计方案桌面百度
  • 网站出现死链怎么办网络事件营销案例
  • 请问番禺哪里有做网站的seo经验
  • 网站后台建设内容株洲seo优化报价
  • 临沂网站制作定制建网站流程
  • 微信小程序怎么批量删掉seo常用优化技巧
  • 江苏省建设工程质量监督站网站培训机构seo