欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何在Django中使用restframework框架-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)如何在Django中使用restframework 框架,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨(dú)特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的成都網(wǎng)站制作、成都網(wǎng)站建設(shè)質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時(shí),也能得到同行業(yè)的專業(yè)認(rèn)可,能夠?yàn)樾袠I(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式營銷型網(wǎng)站建設(shè)需求,讓再小的品牌網(wǎng)站制作也能產(chǎn)生價(jià)值!

Django Rest Framework 是一個(gè)強(qiáng)大且靈活的工具包,使用Django REST Framework可以在Django的基礎(chǔ)上迅速實(shí)現(xiàn)API,用以構(gòu)建Web API。

認(rèn)證Authentication

可以在配置文件中配置全局默認(rèn)的認(rèn)證方案

REST_FRAMEWORK = {
 'DEFAULT_AUTHENTICATION_CLASSES': (
  'rest_framework.authentication.BasicAuthentication', # 基本認(rèn)證
  'rest_framework.authentication.SessionAuthentication', # session認(rèn)證
 )
}

也可以在每個(gè)視圖中通過設(shè)置authentication_classess屬性來設(shè)置

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.views import APIView
class ExampleView(APIView):
 authentication_classes = (SessionAuthentication, BasicAuthentication)
 ...

認(rèn)證失敗會有兩種可能的返回值:

  • 401 Unauthorized 未認(rèn)證

  • 403 Permission Denied 權(quán)限被禁止

權(quán)限Permissions

權(quán)限控制可以限制用戶對于視圖的訪問和對于具體數(shù)據(jù)對象的訪問。

  • 在執(zhí)行視圖的dispatch()方法前,會先進(jìn)行視圖訪問權(quán)限的判斷

  • 在通過get_object()獲取具體對象時(shí),會進(jìn)行對象訪問權(quán)限的判斷

使用

可以在配置文件中設(shè)置默認(rèn)的權(quán)限管理類,如

REST_FRAMEWORK = {
 'DEFAULT_PERMISSION_CLASSES': (
  'rest_framework.permissions.IsAuthenticated',
 )
}

如果未指明,則采用如下默認(rèn)配置

'DEFAULT_PERMISSION_CLASSES': (
 'rest_framework.permissions.AllowAny',
)

也可以在具體的視圖中通過permission_classes屬性來設(shè)置,如

from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView
class ExampleView(APIView):
 permission_classes = (IsAuthenticated,)
 ...

提供的權(quán)限

  • AllowAny 允許所有用戶

  • IsAuthenticated 僅通過認(rèn)證的用戶

  • IsAdminUser 僅管理員用戶

  • IsAuthenticatedOrReadOnly 認(rèn)證的用戶可以完全操作,否則只能get讀取

舉例

from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import RetrieveAPIView
class BookDetailView(RetrieveAPIView):
 queryset = BookInfo.objects.all()
 serializer_class = BookInfoSerializer
 authentication_classes = [SessionAuthentication]
 permission_classes = [IsAuthenticated]

自定義權(quán)限

如需自定義權(quán)限,需繼承rest_framework.permissions.BasePermission父類,并實(shí)現(xiàn)以下兩個(gè)任何一個(gè)方法或全部

  • .has_permission(self, request, view)

是否可以訪問視圖, view表示當(dāng)前視圖對象

  • .has_object_permission(self, request, view, obj)

是否可以訪問數(shù)據(jù)對象, view表示當(dāng)前視圖, obj為數(shù)據(jù)對象

例如:

class MyPermission(BasePermission):
 def has_object_permission(self, request, view, obj):
  """控制對obj對象的訪問權(quán)限,此案例決絕所有對對象的訪問"""
  return False
class BookInfoViewSet(ModelViewSet):
 queryset = BookInfo.objects.all()
 serializer_class = BookInfoSerializer
 permission_classes = [IsAuthenticated, MyPermission]

限流Throttling

可以對接口訪問的頻次進(jìn)行限制,以減輕服務(wù)器壓力。

使用

可以在配置文件中,使用DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES進(jìn)行全局配置,

REST_FRAMEWORK = {
 'DEFAULT_THROTTLE_CLASSES': (
  'rest_framework.throttling.AnonRateThrottle',
  'rest_framework.throttling.UserRateThrottle'
 ),
 'DEFAULT_THROTTLE_RATES': {
  'anon': '100/day',
  'user': '1000/day'
 }
}

DEFAULT_THROTTLE_RATES 可以使用 second, minute, hour 或day來指明周期。

也可以在具體視圖中通過throttle_classess屬性來配置,如

from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView
class ExampleView(APIView):
 throttle_classes = (UserRateThrottle,)
 ...

可選限流類

1) AnonRateThrottle

限制所有匿名未認(rèn)證用戶,使用IP區(qū)分用戶。

使用DEFAULT_THROTTLE_RATES['anon'] 來設(shè)置頻次

2)UserRateThrottle

限制認(rèn)證用戶,使用User id 來區(qū)分。

使用DEFAULT_THROTTLE_RATES['user'] 來設(shè)置頻次

3)ScopedRateThrottle

限制用戶對于每個(gè)視圖的訪問頻次,使用ip或user id。

例如:

class ContactListView(APIView):
 throttle_scope = 'contacts'
 ...
class ContactDetailView(APIView):
 throttle_scope = 'contacts'
 ...
class UploadView(APIView):
 throttle_scope = 'uploads'
 ...
REST_FRAMEWORK = {
 'DEFAULT_THROTTLE_CLASSES': (
  'rest_framework.throttling.ScopedRateThrottle',
 ),
 'DEFAULT_THROTTLE_RATES': {
  'contacts': '1000/day',
  'uploads': '20/day'
 }
}

實(shí)例

from rest_framework.authentication import SessionAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import RetrieveAPIView
from rest_framework.throttling import UserRateThrottle
class BookDetailView(RetrieveAPIView):
 queryset = BookInfo.objects.all()
 serializer_class = BookInfoSerializer
 authentication_classes = [SessionAuthentication]
 permission_classes = [IsAuthenticated]
 throttle_classes = (UserRateThrottle,)

看完上述內(nèi)容,你們對如何在Django中使用restframework 框架有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝大家的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:如何在Django中使用restframework框架-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.chinadenli.net/article36/ihopg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)品牌網(wǎng)站設(shè)計(jì)微信小程序動態(tài)網(wǎng)站網(wǎng)站導(dǎo)航App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司