<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在開發Web應用中,有兩種應用模式:

      1. 前后端不分離

      1.  前后端分離

      目前市面上大部分公司開發人員使用的接口服務架構主要有:restful、rpc。

      rpc: 翻譯成中文:遠程過程調用[遠程服務調用].

      接口多了,對應函數名和參數就多了,前端在請求api接口時,就會比較難找.容易出現重復的接口

      restful: 翻譯成中文: 資源狀態轉換.

      把后端所有的數據/文件都看成資源.

      那么接口請求數據,本質上來說就是對資源的操作了.

      web項目中操作資源,無非就是增刪查改.所以要求在地址欄中聲明要操作的資源是什么,然后通過http請求動詞來說明對資源進行哪一種操作.

      POST http://www.lufei.com/api/students/ 添加學生數據

      GET http://www.lufei.com/api/students/ 獲取所有學生

      DELETE http://www.lufei.com/api/students/<pk> 刪除1個學生

       

      4. 序列化

      api接口開發,最核心最常見的一個過程就是序列化,所謂序列化就是把數據轉換格式,序列化可以分兩個階段:

      序列化: 把我們識別的數據轉換成指定的格式提供給別人。

      對象模型類 --- > json數據

      例如:我們在django中獲取到的數據默認是模型對象,但是模型對象數據無法直接提供給前端或別的平臺使用,所以我們需要把數據進行序列化,變成字符串或者json數據,提供給別人。

      1、創建serializers.py文件

      from rest_framework import serializers
      
      # 聲明序列化器,所有的序列化器都要直接或者間接繼承于 Serializer
      # 其中,ModelSerializer是Serializer的子類,ModelSerializer在Serializer的基礎上進行了代碼簡化
      class StudentSerializer(serializers.Serializer):
          """學生信息序列化器"""
          # 1. 需要進行數據轉換的字段
          id = serializers.IntegerField()
          name = serializers.CharField()
          age = serializers.IntegerField()
          sex = serializers.BooleanField()
          description = serializers.CharField()
      
          # 2. 如果序列化器集成的是ModelSerializer,則需要聲明調用的模型信息
      
          # 3. 驗證代碼
      
          # 4. 編寫添加和更新模型的代碼

      2、在sers的 views.py視圖中設置

      # Create your views here.
      from django.views import View
      from students.models import Student
      from .serializers import StudentSerializer
      from django.http.response import JsonResponse
      class StudentsView(View):
          """使用序列化器序列化轉換多個模型數據"""
          def get(self,request):
              # 獲取數據
              student_list = Student.objects.all()
      
              # 轉換數據[序列化過程]
              # 如果轉換多個模型對象數據,則需要加上many=True
              serializer = StudentSerializer(instance=student_list,many=True)
              print( serializer.data ) # 序列化器轉換后的數據
      
              # 響應數據給客戶端
              # 返回的json數據,如果是列表,則需要聲明safe=False
              return JsonResponse(serializer.data,safe=False)
      
      class StudentView(View):
          """使用序列化器序列化轉換單個模型數據"""
          def get(self,request,pk):
              # 獲取數據
              student = Student.objects.get(pk=pk)
              # 數據轉換[序列化過程]
              serializer = StudentSerializer(instance=student)
              print(serializer.data)
              # 響應數據
              return JsonResponse(serializer.data)

      3、創建自己的urls

      from django.urls.conf import path,re_path
      from . import views
      urlpatterns = [
          path(r"students/",views.StudentsView.as_view()),
          re_path(r"students/(?P<pk>\d+)/",views.StudentView.as_view()),
      ]

      4、在總路由中添加自己的urls

      urlpatterns = [
          path('admin/', admin.site.urls),
          path("ser/",include("sers.urls")),
       ]

      常用字段類型

      字段字段構造方式
      BooleanField BooleanField()
      NullBooleanField NullBooleanField()
      CharField CharField(max_length=None, min_length=None, allow_blank=False, trim_whitespace=True)
      EmailField EmailField(max_length=None, min_length=None, allow_blank=False)
      RegexField RegexField(regex, max_length=None, min_length=None, allow_blank=False)
      SlugField SlugField(maxlength=50, min_length=None, allow_blank=False) 正則字段,驗證正則模式 [a-zA-Z0-9-]+
      URLField URLField(max_length=200, min_length=None, allow_blank=False)
      UUIDField UUIDField(format='hex_verbose') format: 1) 'hex_verbose'"5ce0e9a5-5ffa-654b-cee0-1238041fb31a" 2) 'hex'"5ce0e9a55ffa654bcee01238041fb31a" 3)'int' - 如: "123456789012312313134124512351145145114" 4)'urn' 如: "urn:uuid:5ce0e9a5-5ffa-654b-cee0-1238041fb31a"
      IPAddressField IPAddressField(protocol='both', unpack_ipv4=False, **options)
      IntegerField IntegerField(max_value=None, min_value=None)
      FloatField FloatField(max_value=None, min_value=None)
      DecimalField DecimalField(max_digits, decimal_places, coerce_to_string=None, max_value=None, min_value=None) max_digits: 最多位數 decimal_palces: 小數點位置
      DateTimeField DateTimeField(format=api_settings.DATETIME_FORMAT, input_formats=None)
      DateField DateField(format=api_settings.DATE_FORMAT, input_formats=None)
      TimeField TimeField(format=api_settings.TIME_FORMAT, input_formats=None)
      DurationField DurationField()
      ChoiceField ChoiceField(choices) choices與Django的用法相同
      MultipleChoiceField MultipleChoiceField(choices)
      FileField FileField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL)
      ImageField ImageField(max_length=None, allow_empty_file=False, use_url=UPLOADED_FILES_USE_URL)
      ListField ListField(child=, min_length=None, max_length=None)
      DictField DictField(child=)

      選項參數:

      參數名稱作用
      max_length 最大長度
      min_lenght 最小長度
      allow_blank 是否允許為空
      trim_whitespace 是否截斷空白字符
      max_value 最小值
      min_value 最大值

      通用參數:

      參數名稱說明
      read_only 表明該字段僅用于序列化輸出,默認False
      write_only 表明該字段僅用于反序列化輸入,默認False
      required 表明該字段在反序列化時必須輸入,默認True
      default 反序列化時使用的默認值
      allow_null 表明該字段是否允許傳入None,默認False
      validators 該字段使用的驗證器
      error_messages 包含錯誤編號與錯誤信息的字典
      label 用于HTML展示API頁面時,顯示的字段名稱
      help_text 用于HTML展示API頁面時,顯示的字段幫助提示信息

       

      反序列化:把別人提供的數據轉換/還原成我們需要的格式。

      json ----------- > 對象模型類(存數據庫)

      例如:前端js提供過來的json數據,對于python而言就是字符串,我們需要進行反序列化換成模型類對象,這樣我們才能把數據保存到數據庫中。

      posted on 2019-05-05 22:03  拾玥大熊  閱讀(178)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 日本熟妇hdsex视频| 岛国岛国免费v片在线观看| 精品国产成人国产在线视| 日本一区二区三区专线| 日日猛噜噜狠狠扒开双腿小说| 99在线精品国自产拍中文字幕| 国产精品人妻一区二区高| 色综合天天综合网中文伊| 午夜福利激情一区二区三区| 午夜国产精品福利一二| 亚洲成人资源在线观看| 久久久精品94久久精品| 国产精品第一区亚洲精品| 国产免费高清69式视频在线观看| 日韩熟女熟妇久久精品综合| 成人免费A级毛片无码片2022| 99精品人妻少妇一区| 国产午夜成人久久无码一区二区 | 亚洲精品美女一区二区| 久爱无码精品免费视频在线观看| 强奷乱码中文字幕| 广平县| 国产成人高清亚洲综合| 成人国产精品中文字幕| 精品国产制服丝袜高跟| 熟女蜜臀av麻豆一区二区| 久视频久免费视频久免费| 久久88香港三级台湾三级播放| 国产精品综合av一区二区国产馆 | 亚洲国产天堂久久综合226114| 噜妇插内射精品| 日韩一区二区三区av在线| 香港日本三级亚洲三级| 久久99热只有频精品8| 五月丁香激激情亚洲综合| 蜜臀av午夜精品福利| 亚洲热妇无码av在线播放| 国产欧美日韩精品丝袜高跟鞋| 岛国一区二区三区高清视频| 国产精品久久久久久无毒不卡| 人妻蜜臀久久av不卡|