api 添加數(shù)據(jù)

1.編輯 try_reqwest.html



我們增加一個 sendData 方法筒愚,用于向后端發(fā)送數(shù)據(jù):

<!DOCTYPE html>
<!-- 靜態(tài)文件標簽 -->
{% load staticfiles %}

<html>
    <head>
        <title>try_reqwest</title>
        <script type="text/javascript" src="{% static "js/reqwest.js" %}"></script>
    </head>

    <!-- verbatim 標簽,表示該標簽內(nèi)的內(nèi)容不是用django渲染 -->
    {% verbatim %}
    <body>
        <script type="text/javascript">
            var bookList = {};
            // 從api獲取數(shù)據(jù)
            reqwest({
                url:'http://127.0.0.1:8000/api/book/',  // 請求的url
                type:"json",  // 請求的格式:json
                method:"get",  // 請求的方法:get
                // 請求成功后執(zhí)行的方法恢总,這里保存在bookList中
                success:function (resp) {
                    bookList = resp
                }
            });

            var new_bookList = {};
            // post方法,向后端發(fā)生數(shù)據(jù)睬愤,用于添加數(shù)據(jù)
            var sendData = function(){
                reqwest({
                url:'http://127.0.0.1:8000/api/book/',  // 請求的url
                type:"json",  // 請求的格式:json
                method:"post",  // 請求的方法:post
                // 要發(fā)送的數(shù)據(jù)
                data: { 
                    title: '書本1', 
                    author: '作者1', 
                    summary: '簡介1' 
                },
                success:function (resp) {
                    new_bookList = resp
                }
            })
            }
            
        </script>
    </body>
    {% endverbatim %}

</html>

2.編輯 api.py



數(shù)據(jù)傳到后端后片仿,需要在后端處理并保存數(shù)據(jù):

from library.models import Book
from rest_framework import serializers
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status  # 狀態(tài)碼模塊

class BookSerializer(serializers.ModelSerializer):
    # 定義個字段的格式,這里限制 title 至少要有一個字符
    title = serializers.CharField(min_length=1)
    
    class Meta:
        model = Book
        fields = '__all__'

# 因為發(fā)生數(shù)據(jù)使用 post 方法尤辱,這里要帶上 'POST'
@api_view(['GET', 'POST'])  
def book(request):
    # 請求為 'get' 時候砂豌,獲取數(shù)據(jù)庫中的數(shù)據(jù)
    if request.method == 'GET':
        book_list = Book.objects.all()
        serializer = BookSerializer(book_list, many=True)
        return Response(serializer.data)

    # 請求為 'post' 的時候,獲取來自前端輸入的數(shù)據(jù)
    elif request.method == 'POST':
        serializer = BookSerializer(data=request.data)
        # 檢查數(shù)據(jù)是否通過校驗
        if serializer.is_valid():
            # 如通過校驗光督,存儲到數(shù)據(jù)庫
            serializer.save()
            # 返回 201 狀態(tài)碼
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        # 自定義的錯誤信息
        body = {
            'body': serializer.errors, # 錯誤信息
            'msg': 40001 # 狀態(tài)碼
        }
        # 返回 400 狀態(tài)碼
        return Response(body, status=status.HTTP_400_BAD_REQUEST)

3.測試



在控制臺輸入 sendData() 執(zhí)行該方法:

打開 admin阳距,可以看到添加了剛才寫的新書目:

再看儲存剛才發(fā)送的數(shù)據(jù)的 new_bookList:

剛才我們定義了 title 的長度至少為1,我們嘗試把 title 的內(nèi)容刪去结借,發(fā)生一個空字段:

可以看到發(fā)生不成功筐摘。

還能看到我們自定義的錯誤碼:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市船老,隨后出現(xiàn)的幾起案子咖熟,更是在濱河造成了極大的恐慌,老刑警劉巖柳畔,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馍管,死亡現(xiàn)場離奇詭異,居然都是意外死亡薪韩,警方通過查閱死者的電腦和手機确沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門捌锭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罗捎,你說我怎么就攤上這事观谦。” “怎么了宛逗?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵坎匿,是天一觀的道長。 經(jīng)常有香客問我雷激,道長替蔬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任屎暇,我火速辦了婚禮承桥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘根悼。我一直安慰自己凶异,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布挤巡。 她就那樣靜靜地躺著剩彬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矿卑。 梳的紋絲不亂的頭發(fā)上喉恋,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音母廷,去河邊找鬼轻黑。 笑死,一個胖子當著我的面吹牛琴昆,可吹牛的內(nèi)容都是我干的氓鄙。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼业舍,長吁一口氣:“原來是場噩夢啊……” “哼抖拦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舷暮,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蟋座,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后脚牍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體向臀,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年诸狭,在試婚紗的時候發(fā)現(xiàn)自己被綠了券膀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片君纫。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芹彬,靈堂內(nèi)的尸體忽然破棺而出蓄髓,到底是詐尸還是另有隱情,我是刑警寧澤舒帮,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布会喝,位于F島的核電站,受9級特大地震影響玩郊,放射性物質(zhì)發(fā)生泄漏肢执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一译红、第九天 我趴在偏房一處隱蔽的房頂上張望预茄。 院中可真熱鬧,春花似錦侦厚、人聲如沸耻陕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诗宣。三九已至,卻和暖如春想诅,著一層夾襖步出監(jiān)牢的瞬間召庞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工侧蘸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裁眯,地道東北人鹉梨。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓讳癌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親存皂。 傳聞我的和親對象是個殘疾皇子晌坤,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容