国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

django rest framework個人學(xué)習(xí)筆記(四)————Tutorial2.Reques

0x584a / 843人閱讀

摘要:引入了一個繼承于的對象,并提供更靈活的解析。只處理而且只適用于方法處理所有數(shù)據(jù),適用于也引入了對象,它是一個類型,并根據(jù)客戶端需求正確返回需要的類型。為每個狀態(tài)碼提供了更為明確的標(biāo)識符。注意我們不再明確指定和的響應(yīng)類型。

官網(wǎng)地址

Request 和 Response

這一章將開始覆蓋Rest framework的核心。讓我們來介紹一些基礎(chǔ)組件。

Restquest object

Rest framework 引入了一個繼承于django HttpRequest的對象Request,并提供更靈活的解析。
Request的核心是request.data屬性,他類似于request.POST,但對web api更有用。

request.POST #只處理form data,而且只適用于"POST"方法
request.data #處理所有數(shù)據(jù),適用于 "POST","PUT","PATCH"
Response Object

Rest framework 也引入了Response對象,它是一個TemplateResponse類型,并根據(jù)客戶端需求正確返回需要的類型。

return Response(data) # 根據(jù)客戶端的需求返回不同的類型。
Status codes

在你的views中使用HTTP狀態(tài)碼,總是不太容易閱讀的,而且稍不注意,你會返回一個錯誤的狀態(tài)碼。Rest framework為每個狀態(tài)碼提供了更為明確的標(biāo)識符。例如 status模塊中的 HTTP_400-BAD_REQUEST

裝飾API views

REST framework為你提供了兩個裝飾器,你能夠使用它們來寫你的API views。

@api_view裝飾器適用于function based views

APIView裝飾器適用于 class-based views
這些方法提供一些功能,例如確保你的view收到的請求類型是Request,并將上下文添加到Response當(dāng)中,這樣就能根據(jù)客戶端的需要返回。

裝飾器還提供行為,例如適當(dāng)?shù)臅r候返回405 Method Not Allowed和當(dāng)訪問request.data或者輸入錯誤時,處理所有的"ParseError"異常。

結(jié)合之前的內(nèi)容

好,來開始使用新的組件來寫我們的views。
我們再也不需要在views.py中使用JSONResonse了。我們來開始重構(gòu)我們的views.

from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer


@api_view(["GET", "POST"])
def snippet_list(request):
    """
    List all snippets, or create a new snippet.
    """
    if request.method == "GET":
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)

    elif request.method == "POST":
        serializer = SnippetSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我們所展示的示例view和之前相比,有了相當(dāng)大的進(jìn)展。它更小更簡潔,如果我們正在使用Form API,會發(fā)現(xiàn)這個代碼非常的相似。我們也能夠使用 named status codes

接下來,我們將在views.py模塊中展示一個snippet的詳情。

@api_view(["GET","PUT","DELETE"])
def snippet_detail(request,pk)
"""
檢索,更新或者刪除一個snippet
"""
    try:
        snippet = Snippet.objects.get(pk=pk)
    except Snippet.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)
        
    if request.method == "GET":
        serializer = SnippetSerializer(snippet)
        return Response(serializer.date)
    elif request.method == "PUT":
        serializer = SnippetSerializer(snippet,data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors,status=status.HTPP_400_BAD_REQUEST)
        
    elif request.method == "DELETE":
        snippe.delete()
        return Response(status.status.HTTP_204_NO_CONTENT)

這一切都應(yīng)該感覺特別熟悉-它和標(biāo)準(zhǔn)的Django views沒多少不同。

注意:我們不再明確指定 request和response的響應(yīng)類型。request.data能夠處理所有進(jìn)來的json請求,但他也能夠處理其他的格式。同樣,我們在response中返回我們的數(shù)據(jù),但是由REST framework 來幫助我們來為不同的請求做出正確的響應(yīng)內(nèi)容。

添加url

為我們剛才編寫的兩個view添加url.

def snippet_list(request,format=None)
def snippet_detail(request,pk,format=None)

現(xiàn)在,我們稍微修改一下我們的urls.py文件。

from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from snippets import views

urlpatterns = [
    url(r"^snippets/$",views.snippet_list),
    url(r"^snippets/(?P[0-9]+)$",views.snippet_detail),
]

urlpatterns = format_suffix_patterns(urlpatterns)

我們不是必須要添加這些額外的url patterns,但是它給我們一個簡單,干凈的特定格式。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44457.html

相關(guān)文章

  • django rest framework個人學(xué)習(xí)筆記)————Tutorial2.Reques

    摘要:引入了一個繼承于的對象,并提供更靈活的解析。只處理而且只適用于方法處理所有數(shù)據(jù),適用于也引入了對象,它是一個類型,并根據(jù)客戶端需求正確返回需要的類型。為每個狀態(tài)碼提供了更為明確的標(biāo)識符。注意我們不再明確指定和的響應(yīng)類型。 官網(wǎng)地址 Request 和 Response 這一章將開始覆蓋Rest framework的核心。讓我們來介紹一些基礎(chǔ)組件。 Restquest object Re...

    IamDLY 評論0 收藏0
  • django rest framework個人學(xué)習(xí)筆記)————Tutorial2.Reques

    摘要:引入了一個繼承于的對象,并提供更靈活的解析。只處理而且只適用于方法處理所有數(shù)據(jù),適用于也引入了對象,它是一個類型,并根據(jù)客戶端需求正確返回需要的類型。為每個狀態(tài)碼提供了更為明確的標(biāo)識符。注意我們不再明確指定和的響應(yīng)類型。 官網(wǎng)地址 Request 和 Response 這一章將開始覆蓋Rest framework的核心。讓我們來介紹一些基礎(chǔ)組件。 Restquest object Re...

    rockswang 評論0 收藏0
  • django rest framework個人學(xué)習(xí)筆記(五)————Tutorial3.Class-

    摘要:官網(wǎng)地址個人學(xué)習(xí)筆記四我們也能夠使用來編寫我們的,而不是基于正如我們所看到的,這是一個強(qiáng)大的模式,它使我們的功能能夠復(fù)用,并保持我們的代碼整潔。檢索,更新或者刪除一個實(shí)例。接下來將展示使用來組成我們的。 (官網(wǎng)地址)[django rest framework個人學(xué)習(xí)筆記(四)————Tutorial] Class-based views 我們也能夠使用class-based view...

    Sanchi 評論0 收藏0
  • django rest framework個人學(xué)習(xí)筆記(五)————Tutorial3.Class-

    摘要:官網(wǎng)地址個人學(xué)習(xí)筆記四我們也能夠使用來編寫我們的,而不是基于正如我們所看到的,這是一個強(qiáng)大的模式,它使我們的功能能夠復(fù)用,并保持我們的代碼整潔。檢索,更新或者刪除一個實(shí)例。接下來將展示使用來組成我們的。 (官網(wǎng)地址)[django rest framework個人學(xué)習(xí)筆記(四)————Tutorial] Class-based views 我們也能夠使用class-based view...

    wenshi11019 評論0 收藏0
  • django rest framework個人學(xué)習(xí)筆記(五)————Tutorial3.Class-

    摘要:官網(wǎng)地址個人學(xué)習(xí)筆記四我們也能夠使用來編寫我們的,而不是基于正如我們所看到的,這是一個強(qiáng)大的模式,它使我們的功能能夠復(fù)用,并保持我們的代碼整潔。檢索,更新或者刪除一個實(shí)例。接下來將展示使用來組成我們的。 (官網(wǎng)地址)[django rest framework個人學(xué)習(xí)筆記(四)————Tutorial] Class-based views 我們也能夠使用class-based view...

    channg 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<