最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python Django框架中的嵌套序列化器詳解

 更新時(shí)間:2023年10月27日 08:58:52   作者:鯨落_  
在Web開(kāi)發(fā)領(lǐng)域,創(chuàng)建和使用API(應(yīng)用程序編程接口)是很常見(jiàn)的,Django Rest Framework(DRF)是一個(gè)強(qiáng)大的工具包,在DRF中,一個(gè)關(guān)鍵概念是序列化器,在本文中,我們將深入研究Django中嵌套序列化器的概念以及它們?nèi)绾未龠M(jìn)復(fù)雜數(shù)據(jù)關(guān)系的處理,需要的朋友可以參考下

嵌套序列化器的意義

在許多現(xiàn)實(shí)場(chǎng)景中,數(shù)據(jù)模型表現(xiàn)出彼此之間的關(guān)系。例如,你可能有一個(gè)通過(guò)外鍵與類(lèi)別模型關(guān)聯(lián)的 Book 模型。在這種情況下,僅僅序列化 Book 對(duì)象可能還不夠。你可能希望在序列化輸出中包含相關(guān)的類(lèi)別信息。這正是嵌套序列化器發(fā)揮作用的地方。

設(shè)置項(xiàng)目

讓我們逐步了解 Django 中嵌套序列化器的實(shí)現(xiàn),以了解它們?cè)趯?shí)踐中的工作原理??紤]這樣一個(gè)場(chǎng)景,我們有兩個(gè)模型:類(lèi)別和書(shū)籍,每本書(shū)都屬于一個(gè)類(lèi)別。我們的目標(biāo)是序列化 Book 對(duì)象及其關(guān)聯(lián)的類(lèi)別信息。

啟動(dòng)項(xiàng)目

要啟動(dòng)項(xiàng)目,請(qǐng)使用此命令

django-admin startproject core
cd core

要啟動(dòng)應(yīng)用程序,請(qǐng)使用此命令

python manage.py startapp home

現(xiàn)在將此應(yīng)用程序和 **“rest_framework” **添加到 “settings.py”

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "rest_framework",
    "home",
    "rest_framework.authtoken",
    
]

文件結(jié)構(gòu)

設(shè)置文件

serializer.py:此 Python 代碼使用 Django REST 框架創(chuàng)建兩個(gè)序列化器:CategorySerializerBookSerializer。

  • CategorySerializer序列化Category模型,僅包括category_name字段。
  • BookSerializer 序列化 Book 模型的所有字段。它還包括相關(guān)類(lèi)別模型的序列化。
  • 注釋掉的行#深度= 1表明能夠控制相關(guān)模型序列化的深度,但它當(dāng)前尚未激活。
  • 這些序列化器允許將 Django 模型實(shí)例轉(zhuǎn)換為 JSON 數(shù)據(jù),以便在 API 響應(yīng)或請(qǐng)求中使用
from rest_framework import serializers
from .models import *
from django.contrib.auth.models import User 
class CategorySerializer(serializers.ModelSerializer):
	class Meta:
		model = Category 
		fields = ['category_name',] 
class BookSerializer(serializers.ModelSerializer
	category = CategorySerializer() 
	
	class Meta:
		model = Book 
		fields = '__all__'
		depth =1

models.py:此 Python 代碼定義了兩個(gè) Django 模型:

  • 類(lèi)別模型:表示名稱(chēng)為category_name 字段的類(lèi)別。

  • 書(shū)籍型號(hào):

    • 代表一本書(shū),其標(biāo)題為 book_title 字段。
    • 包括與類(lèi)別模型的外鍵關(guān)系(類(lèi)別),將每本書(shū)連接到一個(gè)類(lèi)別。
    • 使用 on_delete=models.CASCADE確保刪除類(lèi)別時(shí),其關(guān)聯(lián)的書(shū)籍也會(huì)被刪除。
from django.db import models

class Category(models.Model):
	category_name = models.CharField(max_length=100)

class Book(models.Model):
	category = models.ForeignKey(Category, on_delete=models.CASCADE)
	book_title = models.CharField(max_length=100)

admin.py:首先我們注冊(cè)類(lèi)別,然后注冊(cè)書(shū)籍模型。

from django.contrib import admin
from .models import *
admin.site.register(Category)
admin.site.register(Book)

views.py:導(dǎo)入各種 Django 和 Django REST 框架模塊和類(lèi)。使用 @api_view裝飾器定義視圖函數(shù)get_book ,指定它處理 HTTP GET 請(qǐng)求。使用 Book.objects從數(shù)據(jù)庫(kù)檢索所有 Book 對(duì)象。檢索到的 Book 對(duì)象使用BookSerializer 進(jìn)行序列化。返回 JSON 響應(yīng),狀態(tài)代碼為 200,序列化的圖書(shū)數(shù)據(jù)作為負(fù)載。

from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import *
from .serializers import *
from rest_framework.views import APIView
from rest_framework.authtoken.models import Token
@api_view(['GET'])
def get_book(request):
	book_objs = Book.objects.all()
	serializer = BookSerializer(book_objs, many=True)
	return Response({'status': 200, 'payload': serializer.data})

core/urls.py:這是我們項(xiàng)目文件夾的 urls.py 文件,在這個(gè) urls.py 文件中,我們首先導(dǎo)入所有重要的庫(kù),然后使用 include 函數(shù)將應(yīng)用程序與項(xiàng)目映射。

from django.contrib import admin
from django.urls import path, include
from rest_framework.authtoken import views

urlpatterns = [
	path('', include('home.urls')),
	path("admin/", admin.site.urls),

]

app/urls.py: 在應(yīng)用程序的 urls.py 文件中,我們導(dǎo)入 admin 并導(dǎo)入路徑和 include 方法,并導(dǎo)入views.py 文件的所有功能然后我們創(chuàng)建執(zhí)行嵌套序列化操作的路徑

from django.contrib import admin
from django.urls import path, include
from .views import *


urlpatterns = [
path('get-book/', get_book),

]

項(xiàng)目部署

運(yùn)行以下命令來(lái)應(yīng)用遷移:

python3 manage.py makemigrations
python3 manage.py migrate

借助以下命令運(yùn)行服務(wù)器:

python3 manage.py runserver

總結(jié)

總之,Django 中的嵌套序列化器為處理 API 開(kāi)發(fā)中的復(fù)雜數(shù)據(jù)關(guān)系提供了強(qiáng)大的機(jī)制。通過(guò)將相關(guān)模型序列化器合并到主序列化器中,開(kāi)發(fā)人員可以有效地序列化和反序列化數(shù)據(jù)層次結(jié)構(gòu),從而提供結(jié)構(gòu)化且信息豐富的 API 響應(yīng)。無(wú)論是處理父子關(guān)系、深度依賴(lài)關(guān)系還是多級(jí)數(shù)據(jù)結(jié)構(gòu),嵌套序列化程序都增強(qiáng)了 Django 支持的 API 的靈活性和可用性,使其成為創(chuàng)建豐富且高效的 Web 應(yīng)用程序的寶貴工具。

以上就是python Django框架中的嵌套序列化器詳解的詳細(xì)內(nèi)容,更多關(guān)于python Django嵌套序列化器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • OpenCV學(xué)習(xí)之圖像的疊加與混合詳解

    OpenCV學(xué)習(xí)之圖像的疊加與混合詳解

    這篇文章主要為大家詳細(xì)介紹了OpenCV圖像視覺(jué)學(xué)習(xí)中的圖像的疊加與混合,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-02-02
  • Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化

    Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化

    這篇文章主要介紹了Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Flask?數(shù)據(jù)庫(kù)遷移詳情

    Flask?數(shù)據(jù)庫(kù)遷移詳情

    本文給大家分享的是?Flask?數(shù)據(jù)庫(kù)遷移詳情,db.create_all()不會(huì)重新創(chuàng)建表或是更新表,需要先使用db.drop_all()刪除數(shù)據(jù)庫(kù)中所有的表之后再調(diào)用db.create_all()才能重新創(chuàng)建表,但是這樣的話,原來(lái)表中的數(shù)據(jù)就都被刪除了,這肯定是不行的,這時(shí)就出現(xiàn)了數(shù)據(jù)庫(kù)遷移的概念
    2021-11-11
  • Python圖像處理之圖像與視頻處理基礎(chǔ)教程

    Python圖像處理之圖像與視頻處理基礎(chǔ)教程

    這篇文章主要介紹了Python圖像處理之圖像與視頻處理基礎(chǔ)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例

    使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例

    下面小編就為大家?guī)?lái)一篇使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • python簡(jiǎn)單實(shí)現(xiàn)計(jì)算過(guò)期時(shí)間的方法

    python簡(jiǎn)單實(shí)現(xiàn)計(jì)算過(guò)期時(shí)間的方法

    這篇文章主要介紹了python簡(jiǎn)單實(shí)現(xiàn)計(jì)算過(guò)期時(shí)間的方法,涉及Python時(shí)間操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python打包成 .so的實(shí)現(xiàn)步驟

    python打包成 .so的實(shí)現(xiàn)步驟

    當(dāng)需要將產(chǎn)品發(fā)布到外部環(huán)境的時(shí)候,源碼的保護(hù)尤為重要,因此需要將python文件打成so文件的目的就是為了保護(hù)源碼,本文主要介紹了python打包成.so的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2023-12-12
  • PyQt5+python3+pycharm開(kāi)發(fā)環(huán)境配置教程

    PyQt5+python3+pycharm開(kāi)發(fā)環(huán)境配置教程

    這篇文章主要介紹了PyQt5+python3+pycharm開(kāi)發(fā)環(huán)境配置教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳解Python self 參數(shù)

    詳解Python self 參數(shù)

    這篇文章主要介紹了Python self 參數(shù)詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python openCV自制繪畫(huà)板

    python openCV自制繪畫(huà)板

    這篇文章主要為大家詳細(xì)介紹了python openCV自制繪畫(huà)板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10

最新評(píng)論

孟州市| 乌什县| 孙吴县| 宣武区| 疏附县| 孟连| 太仆寺旗| 胶南市| 北海市| 贞丰县| 临潭县| 五华县| 永修县| 大方县| 磴口县| 洪湖市| 河东区| 新野县| 黄梅县| 崇州市| 双江| 清原| 太谷县| 巨野县| 德阳市| 雅江县| 商洛市| 富源县| 曲阜市| 淳安县| 阜康市| 岚皋县| 双城市| 雷山县| 安溪县| 垣曲县| 获嘉县| 阿勒泰市| 枝江市| 清流县| 镇雄县|