Vue Django Restful framework 前后端分離開(kāi)發(fā) - 3

項(xiàng)目里的數(shù)據(jù)錄入就不記錄了帕涌,直接跳到序列化和視圖函數(shù)的編寫(xiě)

1.序列化

假設(shè)我們有一個(gè)類(lèi)如下噩茄,有若干屬性

from datetime import datetime

class Comment(object):
    def __init__(self, email, content, created=None):
        self.email = email
        self.content = content
        self.created = created or datetime.now()

comment = Comment(email='test@example.com', content='foo bar')

最初步的序列化我們就用drf本身的serializer

from rest_framework import serializers

class CommentSerializer(serializers.Serializer):
    email = serializers.EmailField()
    content = serializers.CharField(max_length=200)
    created = serializers.DateTimeField()

這樣下面,我們得出的序列化后的結(jié)果就是

serializer = CommentSerializer(comment)
serializer.data
# {'email': 'test@example.com', 'content': 'foo bar', 'created': '2020-05-10T12:07:10.375877'}

2.APIVIEW視圖

上面的基礎(chǔ)序列化講完了以后,我們來(lái)看和本身模型結(jié)合的事情.
首先在我們goods這個(gè)app下面創(chuàng)建serializer.py

from rest_framework import serializers

class GoodsSerializer(serializers.Serializer):

    name = serializers.CharField(required=True,max_length=100)
    click_num = serializers.IntegerField(default=0)
    goods_front_image = serializers.ImageField(default=0)

需要注意的是绩聘,要將基礎(chǔ)序列化和Model結(jié)合使用沥割,你在serializer里面的字段耗啦,必須要和Model的字段相匹配,不一定要全寫(xiě)上机杜,但是serializer有的字段帜讲,必須Model里面要有,不然會(huì)報(bào)錯(cuò)

接著看views.py里面如何編寫(xiě)函數(shù)

from .serializer import GoodsSerializer
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Goods
# Create your views here.

class GoodsListView(APIView):
    '''
    List all
    '''

    def get(self,request,format=None):
        goods = Goods.objects.all()[:10]
        goods_serializer = GoodsSerializer(goods,many=True)
        return Response(goods_serializer.data)

接著在urls.py里面設(shè)置路由

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
    path('ueditor/',include('DjangoUeditor.urls')),
    path('api-auth/',include('rest_framework.urls',namespace='rest_framework')),

    #商品列表
    path('goods/',GoodsListView.as_view(),name='goods-list'),]

這樣我們就定義完了 127.0.0.1:8000/goods/這個(gè)鏈接
我們來(lái)看一下訪問(wèn)后的效果

APIVIEW視圖

可以看到我們?cè)趕erializer里面設(shè)置的字段椒拗,都顯示出來(lái)了

3.ModelSerializer

上面是用基礎(chǔ)serializer和模型進(jìn)行匹配使用似将,那么是否有更加簡(jiǎn)單些的方法來(lái)使用呢?不用手動(dòng)寫(xiě)這么多fields蚀苛?
那就是ModelSerializer

class GoodsSerializer(serializers.ModelSerializer):

    class Meta:
        model = Goods
        fields = ('name','click_num','market_price','add_time')

這個(gè)用法就是和ModelForm一樣的在验,規(guī)定好fields,寫(xiě)好對(duì)應(yīng)的model
并把Serializer改成ModelSerializer

顯示出對(duì)應(yīng)的4個(gè)fields

如果你將fields設(shè)置為 'all'
那么他就可以把所有的fields都顯示出來(lái)

所有fields都能顯示

不過(guò)可以看到category只顯示了一個(gè)數(shù)字id堵未,因?yàn)樗且粋€(gè)外鍵腋舌,那是否可以把這樣的外鍵內(nèi)容也顯示出來(lái)呢?
那就需要再多創(chuàng)建一個(gè)CategorySerializer

class CategorySerializer(serializers.ModelSerializer):

    class Meta:
        model = GoodsCategory
        fields = '__all__'


class GoodsSerializer(serializers.ModelSerializer):

    category = CategorySerializer()
    class Meta:
        model = Goods
        fields = '__all__'

這樣渗蟹,就可以把具體的category內(nèi)容顯示出來(lái)了


category具體內(nèi)容顯示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末块饺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拙徽,更是在濱河造成了極大的恐慌刨沦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膘怕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡召庞,警方通過(guò)查閱死者的電腦和手機(jī)岛心,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篮灼,“玉大人忘古,你說(shuō)我怎么就攤上這事∽缬眨” “怎么了髓堪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)娘荡。 經(jīng)常有香客問(wèn)我干旁,道長(zhǎng),這世上最難降的妖魔是什么炮沐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任争群,我火速辦了婚禮,結(jié)果婚禮上大年,老公的妹妹穿的比我還像新娘换薄。我一直安慰自己玉雾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布轻要。 她就那樣靜靜地躺著复旬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冲泥。 梳的紋絲不亂的頭發(fā)上驹碍,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音柏蘑,去河邊找鬼幸冻。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咳焚,可吹牛的內(nèi)容都是我干的洽损。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼革半,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碑定!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起又官,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤延刘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后六敬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體碘赖,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年外构,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了普泡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡审编,死狀恐怖撼班,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情垒酬,我是刑警寧澤砰嘁,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站勘究,受9級(jí)特大地震影響矮湘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乱顾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一板祝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧走净,春花似錦券时、人聲如沸孤里。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捌袜。三九已至,卻和暖如春炸枣,著一層夾襖步出監(jiān)牢的瞬間虏等,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工适肠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霍衫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓侯养,卻偏偏與公主長(zhǎng)得像敦跌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逛揩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354