02,rest-framework初識
Rest-framework框架的基本元件
快速例項: https://www.django-rest-framework.org/tutorial/quickstart/#quickstart序列化類
開發我們的Web API的第一件事是為我們的Web API提供一種將程式碼片段例項序列化和反序列化為諸如json
之類的表示形式的方式。我們可以通過宣告與Django forms非常相似的序列化器(serializers)來實現。
簡單實用(基於django原生serializers基於CBV)
models.pyfrom django.db import models
2
3
4
class Book (models.Model):
5
title = models.CharField(max_length=32)
6
price = models.IntegerField()
7
pub_date = models.DateField()
8
publish = models.ForeignKey("Publish", on_delete=models.CASCADE)
9
authors = models.ManyToManyField("Author")
10
11
def __str__(self):
12
return self.title
13
14
15
class Publish(models.Model):
16
name = models.CharField(max_length=32)
17
email = models.EmailField()
18
19
def __str__(self):
20
return self.name
21
22
23
class Author(models.Model):
24
name = models.CharField(max_length=32)
25
age = models.IntegerField()
26
27
def __str__(self):
28
return self.name
方式一:
分發url
<wiz_code_mirror>
3
1
...
2
path('publishes/', views.PublishesView.as_view()),
3
...
檢視類
<wiz_code_mirror>
41
1
import json
2
from django.shortcuts import render, HttpResponse
3
from django.views import View
4
from django.forms.models import model_to_dict
5
from .models import *
6
7
8
class PublishesView(View):
9
# Publish.objects.all().values("name", "email")
10
# <QuerySet [{'name': '蘋果出版社', 'email': '[email protected]'}, {'name': '橘子出版社', 'email': '[email protected]'}]>
11
# list(Publish.objects.all().values("name", "email"))
12
# [{'name': '蘋果出版社', 'email': '[email protected]'}, {'name': '橘子出版社', 'email': '[email protected]'}]
13
def get(self, request):
14
# 序列化方式一
15
# publish_list = list(Publish.objects.all().values("name", "email")) # 注意這個list()
16
# return HttpResponse(json.dumps(publish_list))
17
18
# 序列化方式二
19
# 使用model_to_dict(obj)
20
# publish_list = Publish.objects.all()
21
# temp = []
22
# for obj in publish_list: # 每一個obj就是類物件
23
"""
24
temp.append({
25
"name": "obj.name",
26
"email": "obj.email"
27
})
28
"""
29
# temp.append(model_to_dict(obj))
30
# return HttpResponse(json.dumps(temp))
31
32
# 序列化方式三
33
# publish_list = Publish.objects.all()
34
# from django.core import serializers
35
# ret = serializers.serialize('json', publish_list)
36
# return HttpResponse(ret)
37
38
採用restframework
39
40
def post(self, request):
41
pass
使用rest_framework來序列化
<wiz_code_mirror> 20 1from rest_framework import serializers
2
from rest_framework.response import Response
3
from rest_framework.views import APIView
4
5
6
# 為queryset做序列化
7
class PublishSerializers(serializers.Serializer):
8
"""等同於form.Form"""
9
name = serializers.CharField()
10
email = serializers.CharField()
11
12
13
class PublishesView(APIView):
14
def get(self, request):
15
publish_list = Publish.objects.all()
16
ps = PublishSerializers(publish_list, many=True) # 即可接收Queryset 也可接收 model_obj
17
return Response(ps.data)
18
19
def post(self, request):
20
pass
得到的結果在頁面中不會顯示,會在postmen中顯示
<wiz_code_mirror>
10
1
[
2
{
3
"name": "蘋果出版社",
4
"email": "[email protected]"
5
},
6
{
7
"name": "橘子出版社",
8
"email": "[email protected]"
9
}
10
]
解析器request類
django的request類和rest-framew ork的request類的原始碼解析依然是上面的程式碼 用postmen傳送一次post請求
<wiz_code_mirror> 10 1class PublishesView(View):
2
def post(self, request):
3
print("POST", request.POST)
4
print("BODY", request.body)
5
6
return HttpResponse("POST")
7
相關推薦
02,rest-framework初識
Rest-framework框架的基本元件 快速例項: https://www.django-rest-framework.org/tutorial/quickstart/#quickstart 序列化類 開發我們的Web API的第一件事是為我們的Web API提供一種將程式碼片段例
rest-framework的APIview原始碼分析,Serializer及解析器原始碼分析
rest-framework 1.安裝 方式一:pip3 install djangorestframework 方式二:pycharm圖形化介面安裝 方式三:pycharm命令列下安裝(裝在當前工程所用的直譯器下) 2.djangorestframework的APIVi
Rest Framework:一,認識RESTful
一、CBV的原始碼分析 -Class Base View(基於類的檢視) -Function Base View(基於函式的檢視) -def as_view 類方法 -def view:類方法內部
DAY98 - Rest Framework(三)- 序列化元件之HyperlinkedIdentityField和初識認證元件
一、序列化元件之HyperlinkedIdentityField HyperlinkedIdentityField可以通過反向解析向前臺返回一個連結 url(r'^Books/(?P<id>\d+)', views.BooksDetail.as_view(),name='test'), #
DAY101 - Rest Framework(六)- 檢視元件、路由控制和響應器初識
一、檢視元件 1.基本檢視 class Books(APIView): def get(self, request, *args, **kwargs): books = models.Book.objects.all() response = {'status': 200, 'msg': '查詢成功', '
求助:關於django rest framework + vue(element-ui)跨域問題,求助大佬解決...
前端: headers: { token: '' } if (document.cookie.length > 0) { var arr = document.cookie.split('; ') for (var i = 0; i < arr.length; i++
Django REST Framework學習-分頁,通用檢視,自定義RelatedField
使用通用檢視+分頁+自定義RelatedField url:cardusers/pk/ 傳入模型Card的pk,獲取當前Card的所有User中username和頭像avatar,User是avatar的外來鍵 1. 過載ListAPIView,加入分頁 class
(工作小總結)Django REST Framework 效能優化,簡單實現預載入功能
緣由: Django 的 ORM 是惰性的每個使用者訪問網站時候,都要進行一次資料互動 在最初開發的時候,需要考慮到使用者量大的時候, 又由於 Django 的 ORM 是惰性的,它只取出當前查詢所需響應最小的資料。它不知道你是否有成百上千的相同或相似的
9.6 rest framework 解析器,渲染器
png pan publish 技術分享 全部 接收 數據類型 web mage 解析器 解析器的作用 解析器的作用就是服務端接收客戶端傳過來的數據,把數據解析成自己可以處理的數據。本質就是對請求體中的數據進行解析。 請求體相關字段: Accept:指定了接收
9.5 rest framework 分頁,版本
exception .py 版本 判斷 any tof fst 最大 遊標 分頁 分頁器的引入 from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, C
RESTFULL 07 rest-framework分頁器,相應器,解析器,url控制器,版本控制
訪問 trie htm 獲取 elf temp ren cat view rest-framework分頁器,相應器,解析器,url控制器,版本控制 一、分頁器 1、簡單分頁(查看第n頁,每頁顯示n條) from rest_framework.pagination impo
廣告小程序後端開發(5.安裝配置django-rest-framework,編寫後臺登錄邏輯)
document pre lbs admin ade shortcuts uid ssa and 1.安裝djangorestframework 1.安裝djangorestframework及其依賴包markdown、django-filter。 pip inst
DRF Django REST framework 之 頻率,響應器與分頁器元件(六)
頻率元件 頻率元件類似於許可權元件,它判斷是否給予請求通過。頻率指示臨時狀態,並用於控制客戶端可以向API發出的請求的速率。 與許可權一樣,可以使用多個調節器。API可能會對未經身份驗證的請求進行限制,而對於經過身份驗證的請求則進行限制較少。 例如,可以將使用者限制為每分鐘最多60個請求,每天最多1000個請
Django REST framework 的快速入門教程
ret turn ads 使用 blog 所有 定義 想去 cti CRM-API項目搭建 序列器(Serializers) 首先,我們來定義一些序列器。我們來創建一個新的模塊(module)叫做 crm/rest_searializer.py ,這是我們用來描述數據是如何
Django rest framework 自定義Exception
return cep 格式 message throttle back per ack logs 使用Dango rest framework時,有時需要raise APIException到前端,為了統一錯誤返回格式,我們需要對exception的格式進行調整。 方法
[Django rest-framework] 1-Serialization
www. spa key blog urn allow max pytho led 個人粗淺的理解,歡迎批評指正 什麽是序列化? 後端任務無非對數據庫的增查刪改,操作數據庫無非操作字段,序列化可以讓我們輕松的對數據庫增(serializer.create)改(seril
Django——REST framework
errors self hat 發的 jsonp arc pip url 數據 1. 什麽是REST REST與技術無關,代表的是一種軟件架構風格,REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態轉移” REST從資源的
django-rest-framework筆記-請求與響應篇
python ica ror nic patch cnblogs coo fix ria 一、請求對象 request.POST # 處理表單數據. 限於POST請求. request.data # 處理任意數據. 對 ‘POST‘, ‘PUT‘ and ‘
django-rest-framework筆記-類視圖篇
object span pos all stc cnblogs man ews rom snippet/url.py from django.conf.urls import url from rest_framework.urlpatterns import
帶你進入rest framework
serializers djangorestframework 這邊聲明一下,以下是參考官方文檔來的。新建項目新建名為dimples的django項目在其中建立一個名為astart的APP:新建目錄# 新建目錄mkdir dimplescd dimples新建虛擬環境virtualenv envenv