当前位置: 首页 > news >正文

学习网站建设难吗dreamwearver怎么做静态网站

学习网站建设难吗,dreamwearver怎么做静态网站,自媒体自助下单网站怎么做,关键词文案生成器注意:该文章部分摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除! 显示关联表的数据,本示例会显示所有的关联的数据信息 from rest_framework import serializers from .models import Student class StudentM…

注意:该文章部分摘抄之百度,仅当做学习笔记供小白使用,若侵权请联系删除!


显示关联表的数据,本示例会显示所有的关联的数据信息

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

读取到的结果器数据关联的为数字,此时需要进行一些操作可以读到正确数据

方法1: source='字段名.关联属性值'

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类型字段的对应数据

# 方法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}
}# 局部配置调用视图view
from rest_framework.throttling import UserRateThrottleclass MyView(APIView):# 限流,限制用户的访问频率throttle_classes = (UserRateThrottle)

限流类型

  • AnonRateThrottle 
    • 限制所有匿名未认证的用户,使用IP区分
    • 使用DEFAULT_THROTTLE_RATES['anon'] 来设置频率
  • UserRateThrottle
    • 限制认证用户,使用用户ID区分
    • 使用DEFAULT_THROTTLE_RATES['anon'] 来设置频率
  • ScopedRateThrottle
    • 限制用户对于具体视图的访问频率,使用IP或ID区分
    • 视图中使用throttle_scope 制定频率

全局配置

  • DEFAULT_THROTTLE_CLASSES: 设置限流类型
  • DEFAULT_THROTTLE_RATES: 设置限制的频率

过滤:使用列表数据过滤字段信息,可使用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')# 关联字段需要 关联字段__属性 实现name = filters.CharFilter(field_name='user__name')class Meta:model = UserInfofields = ['name','age']

接口文档:DRF 自动生成网页版的接口文档,其生成的是继承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可快速实现数据的指定方式排序

# 局部信息配置
serializer_class =xxxserializer
filter_backends = [OrderingFilter] # 指定排序的过滤器
ordering_fields = ('age''id')      # 指定字段# 指定ordering参数字段对数据集进行排序 xxx/?ordering=age# 全局配置信息
REST_FRAMEWORK = {# 指定过滤器'DEFAULT_FILTER_BACKENDS':(# 指定django_filters的过滤器过滤'django_filters.rest_framework.DjangoFilterBackend',# 指定DRF自带的排序过滤器来进行数据排序'rest_framework.filters.OrderingFilter'),
}

分页:

# 全局配置
REST_FRAMEWORK = {# 分页 全局配置'DEFAULT_PAGINATION_CLASS':'rest_frame.pagination.PageNumberPagination','PAGE_SIZE': 10 # 每页数据量
}# 局部配置from rest_framework.pagination import PageNumberPaginationclass UserInfoPagination(PageNumberPagination):page_size = 5 # 每页数据量page_query_param =  'page'  # 页面关键字参数,默认 'page'page_size_query_param = 'size' # 前端的每页面关键字参数 默认Nonemax_page_size = 100 # 每页的数据量的最大值class MyView(APIView):"""局部配置,可通过pagination_class属性实现不同的分页器"""pagination_class = UserInfoPagination

异常处理:

# setting 配置
REST_FRAMEWORK = {# 异常处理配置# 'EXCEPTION_HANDLER':'rest_framework.views.exception_handler',# 自定义异常的处理函数接口'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):'图片关联序列化'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

文件的上传和获取下载方式自定义优化

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# 上传文件优化,限制文件的上传大小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.sczhlp.com/news/99183/

相关文章:

  • 用ps怎么做网站导航条wordpress会员制
  • windows系统缺失DLL库文件下载方法
  • 成都中小企业网站建设网站页面分析作业
  • 自己做网站要买服务器吗上海网站建设推广服务
  • 济南正规网站制作怎么选择闵行做网站的公司
  • 网站开发排行中天建设集团网站
  • 网站开发参考书籍微信表情开放平台登录入口
  • 网站跳出率的衡量标准百度开户需要什么资质
  • 建设人才库网站网站建设与管理期中考
  • seo wordpress 插件seo网站查询
  • 做影视网站需要境外最高法律网站是做啥的
  • 更为通用的决策单调性
  • 一文读懂 PHP PSR 接口 PSR-3、PSR-7、PSR-11、PSR-15 完整指南
  • 建设银行网站查余额查询物流网站前端模板下载
  • 网站页脚设计代码什么网站可以卖自己做的东西
  • 基于html做电商网站论文WordPress推荐主机配置
  • 绿植租摆网站建设百度识图软件
  • 网站的基本组成部分有哪些网站调用微信数据
  • 网站建设自查及整改报告厦门入夏网站建设公司
  • 网站建设低价网站到底便宜在哪网站模板怎么修改教程
  • 邵阳建网站多少钱html代码自动生成
  • 外贸网站推广工作织梦如何仿手机网站源码下载
  • 北京网站seo推广注册一个空壳建筑公司
  • 网站名查询网址网站排名优化系统
  • 水果网站系统的建设与实现it运维服务内容
  • 富阳网站建设价格长春专业做网站公司
  • 2025模拟赛Round9
  • NOIP2025模拟赛19
  • Qt/C++开发监控GB28181系统/公网对讲/代码实现28181语音对讲/采集本地麦克风数据/支持udp和tcp模式
  • P3195 [HNOI2008] 玩具装箱 (斜率优化)