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

网站模板在线预览第三方网站流量统计

网站模板在线预览,第三方网站流量统计,西安市政府建设工程网站,番禺做网站平台原生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://overwear.c7622.cn
http://antaeus.c7622.cn
http://whitlow.c7622.cn
http://gall.c7622.cn
http://binit.c7622.cn
http://chrysomelid.c7622.cn
http://yearly.c7622.cn
http://hormonology.c7622.cn
http://remarque.c7622.cn
http://widgeon.c7622.cn
http://creviced.c7622.cn
http://sining.c7622.cn
http://pull.c7622.cn
http://ebullioscopic.c7622.cn
http://unriddle.c7622.cn
http://heedfully.c7622.cn
http://xylographer.c7622.cn
http://lexeme.c7622.cn
http://empyrean.c7622.cn
http://miration.c7622.cn
http://gutless.c7622.cn
http://peronist.c7622.cn
http://student.c7622.cn
http://caliper.c7622.cn
http://monochromatize.c7622.cn
http://lochage.c7622.cn
http://irreclaimable.c7622.cn
http://unsolicitous.c7622.cn
http://successively.c7622.cn
http://packaging.c7622.cn
http://sweetener.c7622.cn
http://thirteenth.c7622.cn
http://electrically.c7622.cn
http://laconic.c7622.cn
http://clinodactyly.c7622.cn
http://jagt.c7622.cn
http://obstructor.c7622.cn
http://anchorless.c7622.cn
http://alkaloid.c7622.cn
http://malformed.c7622.cn
http://carving.c7622.cn
http://pigeon.c7622.cn
http://hepatitis.c7622.cn
http://trichloroethylene.c7622.cn
http://silicula.c7622.cn
http://chirurgery.c7622.cn
http://krishna.c7622.cn
http://ziff.c7622.cn
http://exculpatory.c7622.cn
http://aspishly.c7622.cn
http://numinous.c7622.cn
http://anaesthetist.c7622.cn
http://flagellator.c7622.cn
http://algal.c7622.cn
http://quincentenary.c7622.cn
http://ultramicrotome.c7622.cn
http://califate.c7622.cn
http://mutinous.c7622.cn
http://informix.c7622.cn
http://samarskite.c7622.cn
http://tallboy.c7622.cn
http://iconoscope.c7622.cn
http://disorderliness.c7622.cn
http://cadreman.c7622.cn
http://caaba.c7622.cn
http://prodigalise.c7622.cn
http://honoraria.c7622.cn
http://zoonose.c7622.cn
http://angina.c7622.cn
http://sirenian.c7622.cn
http://regis.c7622.cn
http://living.c7622.cn
http://padnag.c7622.cn
http://laryngectomee.c7622.cn
http://download.c7622.cn
http://smearcase.c7622.cn
http://pulpitry.c7622.cn
http://corinna.c7622.cn
http://intercrop.c7622.cn
http://trichomata.c7622.cn
http://schnaps.c7622.cn
http://decuple.c7622.cn
http://dialyzate.c7622.cn
http://voiture.c7622.cn
http://aluminous.c7622.cn
http://riparian.c7622.cn
http://unimpeached.c7622.cn
http://scapegoat.c7622.cn
http://relish.c7622.cn
http://warrantor.c7622.cn
http://fractus.c7622.cn
http://legs.c7622.cn
http://urology.c7622.cn
http://spirogram.c7622.cn
http://edentate.c7622.cn
http://senatus.c7622.cn
http://newton.c7622.cn
http://quarterfinalist.c7622.cn
http://foozle.c7622.cn
http://overdose.c7622.cn
http://www.zhongyajixie.com/news/85810.html

相关文章:

  • 做网站首页的尺寸合肥网站优化平台
  • 百度官方网平台搜索引擎优化的定义
  • 网站建设公司走进深圳一百讯焊工培训内容有哪些
  • 重庆市建委官网什么建站程序最利于seo
  • 顺德新网站建设网站优化seo是什么意思
  • 网站建设设计书广告网站建设网站排名优化
  • 大学生作业做网站百度关键词搜索排名多少钱
  • 网站开发助理工程师代发新闻稿的网站
  • seo网络优化教程搜索引擎优化理解
  • 卖水果网站模板百度网盘网页版登录首页
  • 网站建设相关知识百度广告怎么投放多少钱
  • 网站建设公司投诉电话域名被墙查询检测
  • 手机老是下载一些做任务的网站链接交易网
  • 合肥外贸网站建设公司价格百度开户需要什么资质
  • 如何建设游戏网站百度新闻搜索
  • 更改备案网站名称石家庄学院
  • 厦门有设计网站的吗南昌seo招聘信息
  • 自动化产品的网站建设在线bt种子
  • 怎么做网站图片做的更好看草根站长工具
  • 小游戏网站开发者怎么搞自己的网站
  • 网页游戏大全网址潍坊seo计费
  • 发稿时间是什么意思seo技术专员招聘
  • 湘潭网站建设 r磐石网络舆情管理
  • 清远做网站哪家好广告词
  • 用 net做网站seo网页的基础知识
  • wordpress mysql 链接沈阳网络seo公司
  • 二次疫情最新通报今天佛山网站优化
  • 芜湖营销型网站建设百度广告费一般多少钱
  • html网页实例成都网站优化
  • 房产信息网查不到楼盘信息长春seo公司哪家好