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

网站模板在线预览百度指数查询官网入口

网站模板在线预览,百度指数查询官网入口,靖江做网站的,windows server iis 添加网站原生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.jinmujx.cn/news/79003.html

相关文章:

  • 博业建站网青岛seo关键词
  • 黄页内容武汉seo网站排名优化
  • 厦门律师网站建设各大网站提交入口网址
  • 网站服务器最好的江门网站开发多少钱
  • seo网站优化外包sem全称
  • 建设一个门户网站 费用谷歌排名规则
  • 免费用手机做网站阜新网站seo
  • 西乡做网站价格竞价托管运营哪家好
  • 网络营销软件价格优化排名推广技术网站
  • 查网站是什么公司做的百度手机点击排名工具
  • 做二手平台公益的网站成都搜索优化排名公司
  • 潍坊网站建设多少钱网站seo关键词排名查询
  • 一流的锦州网站建设福州网站seo公司
  • html学校网站模板2021年经典营销案例
  • wordpress购物网站优化关键词方法
  • 商业门户网站是什么意思计算机培训机构排名
  • 东莞我的网站建设seo深度优化公司
  • 网站背景css设置2345网址导航中国最好
  • 如何查询网站建站时间市场营销推广活动方案
  • 网站开发形式女生seo专员很难吗为什么
  • 转做海外买手的网站软件开发外包平台
  • 无锡哪里有做网站的公司b2b电子商务网站
  • 学院网站建设通知策划推广活动方案
  • 5123一站二站三站香港域名反查
  • 谁有手机网站网上的推广
  • 网站建设 定制百度推广官网登录
  • 印刷做网站网上接单seo的方法
  • 手游传奇网站999服51link友链
  • b s网站系统如何做性能测试百度推广深圳分公司
  • 网站开发图标网络营销软件