当前位置: 首页 > 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://www.zhongyajixie.com/news/48102.html

相关文章:

  • b站私人直播间哪个软件好用域名搜索引擎入口
  • 网站建设 h5百度搜索提交入口
  • wordpress文章自动更新方法长沙网站推广和优化
  • 中山地区做网站公司在百度上怎么发布信息
  • 郑州企业建站设计上海网站营销seo方案
  • 橙子建站是什么平台搜索引擎优化案例分析
  • 做招生网站实体店100个营销策略
  • 软件app研发英语seo什么意思
  • 廊坊外贸网站建设百度搜索引擎优化方式
  • 上海疫情百度灰色词优化排名
  • 移动端网站的优势百度小程序
  • 企业网站建设哪家快软文新闻发布网站
  • 达内网站开发培训价格辽宁网站建设
  • 门户网站建设流程seo是什么意思 为什么要做seo
  • 我的家乡网站设计模板网络推广工具
  • .我爱你 域名网站域名检测工具
  • 外贸用免费网站推广 有效果seo排名优化培训价格
  • 网站公司简介模板免费下载放单平台大全app
  • 外贸业务推广seo是什么化学名称
  • 公司简介宣传图资源网站快速优化排名
  • 做网站需要注意的问题seo在线教程
  • 网站图片如何做超链接搜seo
  • jsp开发网站河南seo排名
  • wordpress用户注册后台免费seo快速排名系统
  • 企业网站被黑后如何处理湖南专业seo优化
  • 网站设计 做鼠标效果微博推广费用
  • 濮阳做网站推广互联网营销师培训大纲
  • wordpress 政府网站企业seo职位
  • 网站二次开发芜湖网络营销公司
  • 二级网站 备案成都网站排名生客seo怎么样