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

凡科专属网站免费注册甘肃省环保建设申报网站

凡科专属网站免费注册,甘肃省环保建设申报网站,登录网站定制,有云服务器怎么做网站原生Django实现学生管理API需要200行代码#xff0c;而DRF仅需20行#xff01;揭秘如何用序列化器提升10倍开发效率。 目录 一、Web应用模式演进 1.1 前后端不分离 1.2 前后端分离 二、API接口规范之争 2.1 RPC#xff08;远程过程调用#xff09; 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请求为主 参数指定动作actionget_studentsclass301 数据格式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(id1) serializer StudentSerializer(student) return JsonResponse(serializer.data) 反序列化JSON → Python字典 → 模型对象 data request.data serializer StudentSerializer(datadata) if serializer.is_valid():serializer.save() # 保存到数据库 3.2 定义序列化器 from rest_framework import serializersclass StudentSerializer(serializers.Serializer):id serializers.IntegerField(read_onlyTrue)name serializers.CharField(max_length100)sex serializers.BooleanField(defaultTrue)age serializers.IntegerField(min_value0)description serializers.CharField(allow_blankTrue) 3.3 常用字段类型速查 字段类型说明关键参数CharField字符串max_length, allow_blankEmailField邮箱格式-IntegerField整型min_value, max_valueDateTimeField日期时间format%Y-%m-%d %H:%MChoiceField选择字段choices((1, 男), (0, 女))FileField文件上传max_length, allow_empty_file 四、DRF环境配置实战 4.1 安装与配置 # 创建虚拟环境 python -m venv drf_env source drf_env/bin/activate# 安装依赖 pip install django3.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_length100, verbose_name姓名)sex models.BooleanField(defaultTrue, verbose_name性别)age models.IntegerField(verbose_name年龄)classmate models.CharField(max_length5, 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/更新ID1的学生 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] Areturn 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_onlyTrue) # 仅用于输入last_login serializers.DateTimeField(read_onlyTrue) # 仅用于输出class Meta:model Userfields (username, password, last_login) 七、DRF核心优势总结 序列化器自动处理模型↔JSON转换 视图集5行代码实现CRUD接口 认证模块JWT/OAuth开箱即用 调试界面自动生成API文档 扩展生态过滤/分页/限流插件
http://www.hkea.cn/news/14377785/

相关文章:

  • 为什么做的网站别的浏览器打不开怎么回事推广游戏的平台
  • 白云区网站建设公昆明网站搭建多少钱
  • 网站做三个月收录100域名访问网站是什么意思
  • 可以免费建设网站吗怎么建设查询网站php
  • 网站seo站长工具网站取源用iapp做软件
  • c2c电商网站有哪些东莞智通人才网官方网站
  • 妇科医院网站建设怎么做公司要想做个网站这么弄
  • 天津工程建设信息网站中国新闻社浙江分社
  • 惠水网站建设网站图片切换js代码
  • 渭南网站建设哪里便宜建设网站需要学什么
  • 前端网站效果有哪些六安钢贴吧
  • 开服网站建设公司网站无法收录
  • 网站建设运维情况自查报告做甜品网站的需求分析
  • 网站的区别企业文化vi设计
  • 网站上发布的内容字体多少合适邯山手机网站建设
  • 推荐优秀网站最经典最常用的网络营销方法
  • 国内外优秀网站设计外国网站备案
  • 绵阳做绵阳做网站网站北京响应式网站建设公司
  • 宝塔建设网站域名进不去天津市工程建设信息系统
  • 兰州优秀网站推广免费简历在线制作网站
  • 免费网站制作公司seo是哪个英文的简写
  • 沈阳设计网站关于网站优化的文章
  • 免费看各大网站的软件自己做的小网站如何发布
  • 推广网站wap端怎么做打开网站文件夹权限设置
  • 国产网站开发工具公司网站优化排名提升
  • 公司网站建设支出计入重庆微信网站代理商
  • 淄博网站建设补贴网站导航栏高度
  • 对于网站开发有什么要求宜宾网站建设价格
  • 百度收录比较好的网站济宁网站建设 优化培训
  • 网站建设与规划网络营销与网络推广的异同