中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做編程題的網(wǎng)站全國新冠疫苗接種率

做編程題的網(wǎng)站,全國新冠疫苗接種率,如何做電商直播,臺州公司網(wǎng)站外包注意:該文章部分摘抄之百度,僅當做學習筆記供小白使用,若侵權請聯(lián)系刪除! 顯示關聯(lián)表的數(shù)據(jù),本示例會顯示所有的關聯(lián)的數(shù)據(jù)信息 from rest_framework import serializers from .models import Student class StudentM…

注意:該文章部分摘抄之百度,僅當做學習筆記供小白使用,若侵權請聯(lián)系刪除!


顯示關聯(lián)表的數(shù)據(jù),本示例會顯示所有的關聯(lián)的數(shù)據(jù)信息

from rest_framework import serializers
from .models import Student
class StudentModelSerializer(serializers.ModelSerializer):class Meta:model = Studentfields = "__all__"

讀取到的結果器數(shù)據(jù)關聯(lián)的為數(shù)字,此時需要進行一些操作可以讀到正確數(shù)據(jù)

方法1: source='字段名.關聯(lián)屬性值'

from rest_framework import serializers
from drf_app import models
# 文章的Serializer
class ArticleSerializer(serializers.ModelSerializer):category = serializers.CharField(source='category.name')class Meta:model = models.Articlefields = ['id','title','summary','content','category']

方法2 : 返回其屬性值

from rest_framework import serializers
from . import models# 文章的Serializer
class ArticleSerializer(serializers.ModelSerializer):category = serializers.SerializerMethodField()class Meta:model = models.Articlefields = ['id', 'title', 'summary', 'content', 'category']def get_category(self, obj):  # obj是表中的一行記錄的對象return obj.category.name

顯示choice類型字段的對應數(shù)據(jù)

# 方法1
status = serializers.CharField(source='get_status_display')
# 方法2
class Meta:def get_category(self,obj):   #obj是表中的一行記錄的對象return get_status_display()

認證&權限

權限選項:

  • AllowAny?????????? # 容許所有用戶
  • IsAuthenticated?? #? 僅通過認證的用戶
  • IsAdminUser????? #? 僅管理員用戶
  • IsAuthenticatedOrReadOnly? #? 只有認證的用戶可以完全操作,其他可以可讀
# 全局認證&權限配置
REST_FRAMEWORK ={'DEFAULT_AUTHENTICATION_CLASSES':('rest_framework.authentication.BasicAuthentication', # Basic 認證'rest_framework.authentication.SessionAuthentication', # Session 認證),'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permission.IsAuthenticated'  #  全局權限管理 登錄的用戶才可以訪問), # 若無此配置,默認所有用戶可以訪問,rest_framework.permission.AllowAny
}# view 單個視圖認證&權限
from rest_framework.authentication import SessionAuthentication,BasicAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIViewclass MyView(APIView):# 指定認證的方式 # 401 未認證  403 權限被禁止authentication_classes = (SessionAuthentication,BasicAuthentication)permission_classes = (IsAuthenticated)# url 文件配置# DRF自帶的登錄接口認證
path('api-auth/',include('rest_framework.urls'))  # 登錄接口的配置,已封裝注銷及登錄接口

限流: 限制接口的訪問頻率,減少服務器的壓力(反爬蟲)

REST_FRAMEWORK ={#  限流,全局默認配置'DEFAULT_THROTTLE_CLASSES':['rest_framework.throttling.AnonRateThrottle','rest_framework.throttling.UserRateThrottle',],# 設置用戶的訪問頻率,局部用戶限制,通過使用UserRateThrottle來限制用戶的訪問頻率'DEFAULT_THROTTLE_RATES': {# 時間周期  second/minute/hour/day'anon':'10/day' ,  # 未認證的用戶 10/day'user':'1000/day'  # 認證的用戶   100/day}
}# 局部配置調(diào)用視圖view
from rest_framework.throttling import UserRateThrottleclass MyView(APIView):# 限流,限制用戶的訪問頻率throttle_classes = (UserRateThrottle)

限流類型

  • AnonRateThrottle?
    • 限制所有匿名未認證的用戶,使用IP區(qū)分
    • 使用DEFAULT_THROTTLE_RATES['anon'] 來設置頻率
  • UserRateThrottle
    • 限制認證用戶,使用用戶ID區(qū)分
    • 使用DEFAULT_THROTTLE_RATES['anon'] 來設置頻率
  • ScopedRateThrottle
    • 限制用戶對于具體視圖的訪問頻率,使用IP或ID區(qū)分
    • 視圖中使用throttle_scope 制定頻率

全局配置

  • DEFAULT_THROTTLE_CLASSES: 設置限流類型
  • DEFAULT_THROTTLE_RATES: 設置限制的頻率

過濾:使用列表數(shù)據(jù)過濾字段信息,可使用django-fitlter擴展支持

pip install  django-filter #  安裝過濾器
#  注冊app
'django_filters'# 指定過濾器
REST_FRAMEWORK = {'DEFAULT_FILTER_BACKENDS':('django_filters.rest_framework.DjangoFilterBackend')
}
# 方式1 自定義字段過濾
filterset_fields = ('age',)
# 方法2 自定義過濾類
filterset_class = UserInfoFilterfrom app.models import UserInfo
from django_filters import rest_framework as filters
class UserInfoFilter(filters.FilterSet):"""自定義過濾器類"""# 自定義字段過濾min_age  = filters.NumberFilter(field_name='age',lookup_expr='gte')max_age  = filters.NumberFilter(field_name='age',lookup_expr='lte')# 關聯(lián)字段需要 關聯(lián)字段__屬性 實現(xiàn)name = filters.CharFilter(field_name='user__name')class Meta:model = UserInfofields = ['name','age']

接口文檔:DRF 自動生成網(wǎng)頁版的接口文檔,其生成的是繼承APIView及其子類的視圖

pip install  coreapi # 安裝依賴
# setting 配置
REST_FRAMEWORK = {# 接口文檔配置'DEFAULT_SCHEMA_CLASS':'rest_framework.schemas.coreapi.AutoSchema',
}# url 配置
from django.urls import path,include,re_path
from rest_framework.documentation import include_docs_urls
urlpatterns = [re_path(r'^docs/',include_docs_urls(title='接口文檔'))
]

排序:DRF提供OrderingFilter可快速實現(xiàn)數(shù)據(jù)的指定方式排序

# 局部信息配置
serializer_class =xxxserializer
filter_backends = [OrderingFilter] # 指定排序的過濾器
ordering_fields = ('age''id')      # 指定字段# 指定ordering參數(shù)字段對數(shù)據(jù)集進行排序 xxx/?ordering=age# 全局配置信息
REST_FRAMEWORK = {# 指定過濾器'DEFAULT_FILTER_BACKENDS':(# 指定django_filters的過濾器過濾'django_filters.rest_framework.DjangoFilterBackend',# 指定DRF自帶的排序過濾器來進行數(shù)據(jù)排序'rest_framework.filters.OrderingFilter'),
}

分頁:

# 全局配置
REST_FRAMEWORK = {# 分頁 全局配置'DEFAULT_PAGINATION_CLASS':'rest_frame.pagination.PageNumberPagination','PAGE_SIZE': 10 # 每頁數(shù)據(jù)量
}# 局部配置from rest_framework.pagination import PageNumberPaginationclass UserInfoPagination(PageNumberPagination):page_size = 5 # 每頁數(shù)據(jù)量page_query_param =  'page'  # 頁面關鍵字參數(shù),默認 'page'page_size_query_param = 'size' # 前端的每頁面關鍵字參數(shù) 默認Nonemax_page_size = 100 # 每頁的數(shù)據(jù)量的最大值class MyView(APIView):"""局部配置,可通過pagination_class屬性實現(xiàn)不同的分頁器"""pagination_class = UserInfoPagination

異常處理:

# setting 配置
REST_FRAMEWORK = {# 異常處理配置# 'EXCEPTION_HANDLER':'rest_framework.views.exception_handler',# 自定義異常的處理函數(shù)接口'EXCEPTION_HANDLER':'common.exception.my_exception_handler',
}# 自定義異常處理
from rest_framework.views import exception_handler,Response,statusdef custom_exception_handler(exc,context):response = exception_handler(exc,context)if response is not None:response.data['status_code'] = response.status_codeelse:data ={'error':'服務器出錯了'}response  =Response(data,status=status.HTTP_500_INTERNAL_SERVER_ERROR)return response

?文件上傳:

  • ImageField?? # 上傳圖片
  • FileField?????? #? 上傳文件
# model 配置
class ImageModel(models.Model):# file = models.FileField()  # 保存文件的字段file = models.ImageField() # 用于保存圖片文件的字段class Meta:db_table = 'image'verbose_name = '圖片'# serial 序列化
from rest_framework import serializers
from models import UserInfo,ImageModelclass ImageSerializer(serializers.ModelSerializer):'圖片關聯(lián)序列化'class Meta:model = ImageModelfields = '__all__'#setting 配置
# 指定文件上傳存放的路徑
MEDIA_ROOT = BASE_DIR / 'image'# 指定文件url的路徑
MEDIA_URL = ''# view視圖配置from .models import models,ImageModel
from rest_framework.viewsets import ModelViewSet,mixins,GenericViewSetfrom .serializers import ImageSerializer
class ImageView(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.ListModelMixin,GenericViewSet):queryset =  ImageModel.objects.all()serializer_class = ImageSerializer

文件的上傳和獲取下載方式自定義優(yōu)化

from .models import models,ImageModel
from rest_framework.viewsets import ModelViewSet,mixins,GenericViewSet
from django.http import FileResponsefrom .serializers import ImageSerializer
class ImageView(mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.ListModelMixin,GenericViewSet):queryset =  ImageModel.objects.all()serializer_class = ImageSerializer# 上傳文件優(yōu)化,限制文件的上傳大小def create(self, request, *args, **kwargs):pic = request.data.get('files')size,name,type = pic.size,pic.name,pic.content_typeif size>1024*30:return Response({'error':'圖片不可以超過30kb'},status=status.HTTP_400_BAD_REQUEST)elif type not in ['image/png','image/jpg']:return Response({'error':'你上傳的文件格式有問題'},status=status.HTTP_400_BAD_REQUEST)else:return super().create(request,*args,**kwargs)def retrieve(self, request, *args, **kwargs): # 照片獲取下載pic = self.get_object()path = pic.files.pathreturn FileResponse(open(path),'rb')def get_image(request,name):path  = MEDIA_ROOT / namereturn FileResponse(open(path,'rb'))# url 配置
urlpatterns = [re_path('image/(.+?)/',views.get_image)
]

http://www.risenshineclean.com/news/64901.html

相關文章:

  • seo營銷網(wǎng)站的設計標準百度快照優(yōu)化
  • 有什么專門搜試卷做的網(wǎng)站app推廣平臺排行榜
  • 重慶裝修貸廣州seo服務外包
  • 廣州天河區(qū)網(wǎng)站建設搜索引擎推廣有哪些
  • 移動端是指手機還是電腦優(yōu)化大師如何刪掉多余的學生
  • 安卓市場2022最新版下載河南網(wǎng)站關鍵詞優(yōu)化
  • 蘇州網(wǎng)站建設選蘇州夢易行百度網(wǎng)游排行榜
  • 余姚網(wǎng)站制作軟文營銷是什么意思
  • 俄文網(wǎng)站策劃搜索引擎都有哪些
  • 燕郊做網(wǎng)站的外貿(mào)網(wǎng)站建設 google
  • 淘客軟件自動做網(wǎng)站百度網(wǎng)址大全舊版
  • 網(wǎng)站界面用什么軟件做百度云電腦版網(wǎng)站入口
  • 適合做外鏈的網(wǎng)站互聯(lián)網(wǎng)平臺
  • 社區(qū)問答網(wǎng)站開發(fā)谷歌推廣開戶
  • 杭州網(wǎng)站建設杭州磁力引擎
  • 百度網(wǎng)站快速排名公司重慶seo網(wǎng)絡推廣
  • 佛山市城市建設檔案館網(wǎng)站競猜世界杯
  • 深圳網(wǎng)站建設html5惠州seo怎么做
  • 做外貿(mào)收費的網(wǎng)站seo交流論壇
  • 買公司的網(wǎng)站建設北京seo顧問外包
  • 盤古建站模板seo研究中心論壇
  • 河南官網(wǎng)網(wǎng)站建設廣告語
  • 互動網(wǎng)站設計與制作提供seo顧問服務適合的對象是
  • 上海裝修公司做網(wǎng)站seo日常工作
  • 小網(wǎng)站建設360搜索引擎
  • 西藏做網(wǎng)站找誰網(wǎng)址關鍵詞查詢網(wǎng)站
  • 一諾建站廣東省人大常委會
  • 自貢做網(wǎng)站的公司百度快速收錄賬號購買
  • ftp網(wǎng)站目錄深圳關鍵詞優(yōu)化公司哪家好
  • 嘉興南湖區(qū)優(yōu)秀營銷型網(wǎng)站建設關鍵詞優(yōu)化計劃