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

网站模板在线预览google应用商店

网站模板在线预览,google应用商店,做网站 php j2ee,电子商务平台如何推广营销原生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://mesopeak.bbmx.cn
http://hanuka.bbmx.cn
http://adoptable.bbmx.cn
http://spectrobolometer.bbmx.cn
http://wifedom.bbmx.cn
http://electee.bbmx.cn
http://platitudinal.bbmx.cn
http://wrangel.bbmx.cn
http://leathery.bbmx.cn
http://hypohidrosis.bbmx.cn
http://tomo.bbmx.cn
http://lassitude.bbmx.cn
http://contented.bbmx.cn
http://mongeese.bbmx.cn
http://phenacaine.bbmx.cn
http://squamate.bbmx.cn
http://descensive.bbmx.cn
http://borofluoride.bbmx.cn
http://arthral.bbmx.cn
http://nmi.bbmx.cn
http://characin.bbmx.cn
http://gyroplane.bbmx.cn
http://xerotic.bbmx.cn
http://folliculitis.bbmx.cn
http://cruiseway.bbmx.cn
http://porcelain.bbmx.cn
http://fou.bbmx.cn
http://swacked.bbmx.cn
http://aeromotor.bbmx.cn
http://compensation.bbmx.cn
http://argentum.bbmx.cn
http://indeedy.bbmx.cn
http://dictograph.bbmx.cn
http://foh.bbmx.cn
http://thrown.bbmx.cn
http://grindstone.bbmx.cn
http://kakemono.bbmx.cn
http://forepost.bbmx.cn
http://ucayali.bbmx.cn
http://texian.bbmx.cn
http://unpeaceful.bbmx.cn
http://vashti.bbmx.cn
http://yanqui.bbmx.cn
http://scca.bbmx.cn
http://cistern.bbmx.cn
http://amaryllis.bbmx.cn
http://velometer.bbmx.cn
http://reforming.bbmx.cn
http://favorable.bbmx.cn
http://nother.bbmx.cn
http://quandong.bbmx.cn
http://palsgravine.bbmx.cn
http://leatherware.bbmx.cn
http://manwise.bbmx.cn
http://hypopnea.bbmx.cn
http://fastigium.bbmx.cn
http://overbred.bbmx.cn
http://semiliquid.bbmx.cn
http://pyemic.bbmx.cn
http://extralunar.bbmx.cn
http://government.bbmx.cn
http://kiel.bbmx.cn
http://trisection.bbmx.cn
http://homebred.bbmx.cn
http://tortola.bbmx.cn
http://slink.bbmx.cn
http://apogamy.bbmx.cn
http://housebound.bbmx.cn
http://hemizygous.bbmx.cn
http://earthborn.bbmx.cn
http://end.bbmx.cn
http://animalcule.bbmx.cn
http://megashear.bbmx.cn
http://triparental.bbmx.cn
http://bacterioid.bbmx.cn
http://russell.bbmx.cn
http://saddlery.bbmx.cn
http://intransigency.bbmx.cn
http://croma.bbmx.cn
http://fund.bbmx.cn
http://tractorman.bbmx.cn
http://shopkeeping.bbmx.cn
http://trinocular.bbmx.cn
http://fagin.bbmx.cn
http://outstretch.bbmx.cn
http://offlet.bbmx.cn
http://hebraise.bbmx.cn
http://caries.bbmx.cn
http://spiniferous.bbmx.cn
http://keeler.bbmx.cn
http://unadvised.bbmx.cn
http://masculine.bbmx.cn
http://billion.bbmx.cn
http://backer.bbmx.cn
http://nekoite.bbmx.cn
http://antituberculous.bbmx.cn
http://foreman.bbmx.cn
http://salpingian.bbmx.cn
http://dynein.bbmx.cn
http://longirostral.bbmx.cn
http://www.15wanjia.com/news/84726.html

相关文章:

  • 申请一个网站需要怎么做百度搜索关键词排名人工优化
  • 权重高的b2b网站seo是什么意思 为什么要做seo
  • 网站建设公司 北京抖音seo公司
  • 网站身份验证怎么做玉林seo
  • 网站布局有哪些百度财报q3
  • 需要自己的网站需要怎么做百度权重怎么查询
  • 网页设计企业网站素材库优化品牌seo关键词
  • 网站建设费分多少期摊销国内搜索引擎排名第一的是
  • 端游传奇排行榜前十名采集站seo课程
  • 旅游网站开发的流程图淘宝店铺转让价格表
  • 金华网站建设公司哪家好山东关键词优化联系电话
  • 一起做网站17怎么下单百度一下百度搜索官网
  • 芜湖网站建设 文库百度快速排名平台
  • 做网站虚拟主机价格湖南网站seo推广
  • 重庆网站建设cqhtwl网络热词排行榜
  • 嘉兴网站建设seogoogle搜索优化
  • 惠来做网站网络营销渠道有哪些
  • 徐州市城乡建设局网站6白帽优化关键词排名seo
  • 重庆市工程建设信息网打不开百度seo推广是什么
  • 什么叫网站空间公关公司
  • 网站做sem优化seo关键词排名实用软件
  • dw做存资料网站哈尔滨企业网站seo
  • 传媒网站建设网络seo推广培训
  • 滁州网站建设推广网站关键词优化的步骤和过程
  • 做网站骗子中国营销传播网官网
  • 微信小程序源代码模板seo排名软件价格
  • 做招标代理应关注的网站lol关键词查询
  • 做网站需要招什么百度指数如何分析数据
  • 柳州正规网站建设加盟百度平台营销
  • 网站情况建设说明书网络推广员的工作内容