中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站模板怎么建站新東方在線教育平臺官網(wǎng)

網(wǎng)站模板怎么建站,新東方在線教育平臺官網(wǎng),網(wǎng)站運營怎么做,廣東網(wǎng)站建設定制原生Django實現(xiàn)學生管理API需要200行代碼,而DRF僅需20行!揭秘如何用序列化器提升10倍開發(fā)效率。 目錄 一、Web應用模式演進 1.1 前后端不分離 1.2 前后端分離 二、API接口規(guī)范之爭 2.1 RPC(遠程過程調用) 2.2 RESTful&…

????????原生Django實現(xiàn)學生管理API需要200+行代碼,而DRF僅需20行!揭秘如何用序列化器提升10倍開發(fā)效率。

目錄

一、Web應用模式演進

1.1 前后端不分離

1.2 前后端分離

二、API接口規(guī)范之爭

2.1 RPC(遠程過程調用)

2.2 RESTful(表征狀態(tài)轉移)

核心原則:

冪等性保證:

三、DRF核心:序列化器

3.1 序列化器的作用

序列化:模型對象 → Python字典 → JSON

反序列化:JSON → Python字典 → 模型對象

3.2 定義序列化器

3.3 常用字段類型速查

四、DRF環(huán)境配置實戰(zhàn)

4.1 安裝與配置

4.2 項目配置

4.3 模型定義

五、DRF極簡開發(fā)模式

5.1 模型序列化器

5.2 視圖集配置

5.3 路由配置

5.4 接口測試效果

六、高級序列化技巧

6.1 自定義驗證

6.2 重寫創(chuàng)建/更新

6.3 只讀/只寫字段

七、DRF核心優(yōu)勢總結


一、Web應用模式演進

1.1 前后端不分離

  • 服務端主導:后端直接生成HTML/CSS/JS

  • 工作流程

graph LR
A[瀏覽器請求] --> B[應用服務器]
B --> C[數(shù)據(jù)庫查詢]
C --> D[模板渲染]
D --> E[返回HTML]

1.2 前后端分離

  • 核心解耦

    • 前端:獨立靜態(tài)資源服務(HTML/CSS/JS)

    • 后端:純數(shù)據(jù)接口(JSON/XML)

  • 數(shù)據(jù)交互流程

graph LR
瀏覽器 --> |請求HTML| 靜態(tài)服務器
瀏覽器 --> |請求數(shù)據(jù)| 應用服務器
應用服務器 --> 數(shù)據(jù)庫
靜態(tài)服務器 --> |返回文件| 瀏覽器
應用服務器 --> |返回JSON| 瀏覽器

二、API接口規(guī)范之爭

2.1 RPC(遠程過程調用)

  • 特點

    • 單一入口:http://api.xxx.com/

    • POST請求為主

    • 參數(shù)指定動作:action=get_students&class=301

    • 數(shù)據(jù)格式:Protobuf/JSON/XML

  • 痛點

    • 接口命名混亂

    • 函數(shù)參數(shù)膨脹

    • 歷史接口重復

2.2 RESTful(表征狀態(tài)轉移)

  • 核心原則

    • 資源即名詞:/students/、/avatars/

    • HTTP動詞定義操作:

    HTTP方法端點動作
    POST/students/創(chuàng)建學生
    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()  # 保存到數(shù)據(jù)庫

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 常用字段類型速查

字段類型說明關鍵參數(shù)
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環(huán)境配置實戰(zhàn)

4.1 安裝與配置

# 創(chuàng)建虛擬環(huán)境
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極簡開發(fā)模式

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/:創(chuàng)建學生

  • 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 重寫創(chuàng)建/更新

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核心優(yōu)勢總結

  1. 序列化器:自動處理模型?JSON轉換

  2. 視圖集:5行代碼實現(xiàn)CRUD接口

  3. 認證模塊:JWT/OAuth開箱即用

  4. 調試界面:自動生成API文檔

  5. 擴展生態(tài):過濾/分頁/限流插件

http://www.risenshineclean.com/news/60472.html

相關文章:

  • 肅寧做網(wǎng)站湖南優(yōu)化電商服務有限公司
  • 上海速恒網(wǎng)絡科技有限公司天津seo優(yōu)化公司
  • 英文b2c網(wǎng)站營銷技巧有哪些
  • 做網(wǎng)站公司哪個好百度免費推廣平臺
  • 天津做網(wǎng)站就到徽信xiala5如何制作網(wǎng)站二維碼
  • 煙臺高端品牌網(wǎng)站建設百度搜索使用方法
  • 壽光網(wǎng)站建設品牌網(wǎng)站建設方案
  • wordpress手機端響應慢seo上排名
  • 安康做企業(yè)網(wǎng)站的2021百度模擬點擊工具
  • 公司想建立一個網(wǎng)站嗎app推廣好做嗎
  • 免費外貿網(wǎng)站國際新聞最新消息2022
  • 建設網(wǎng)站需要先構建好模型聊城seo整站優(yōu)化報價
  • 網(wǎng)站怎么做微博鏈接網(wǎng)絡營銷的8個基本職能
  • 做觸屏網(wǎng)站重慶seo教程博客
  • 車商城網(wǎng)站建設新媒體運營培訓課程
  • mail263企業(yè)郵箱登錄入口鄭州網(wǎng)站優(yōu)化外包
  • 新媒體公司網(wǎng)站怎么做鞍山seo公司
  • 做個網(wǎng)站多少錢怎么接廣告廣告代運營公司
  • 如何擁有自己的專屬域名滁州網(wǎng)站seo
  • 安康做網(wǎng)站的公司電話小紅書搜索指數(shù)
  • 網(wǎng)站請人做要多少錢新聞稿營銷
  • 廣告型網(wǎng)站怎么做的如何查詢網(wǎng)站收錄情況
  • 萊蕪招聘的網(wǎng)站app開發(fā)公司有哪些
  • 網(wǎng)站備案好處如何進行seo
  • 網(wǎng)站色彩運用cba排名最新排名
  • 東莞網(wǎng)頁制作免費網(wǎng)站制作如何在百度上發(fā)布廣告
  • 新時代政府網(wǎng)站建設網(wǎng)推什么平臺好用
  • 重慶網(wǎng)站查詢網(wǎng)絡營銷有哪些手段
  • 怎么做自己的導航網(wǎng)站網(wǎng)站推廣排名
  • 西安網(wǎng)站建設官網(wǎng)網(wǎng)推