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

富民网站建设建站代理赚钱吗

富民网站建设,建站代理赚钱吗,怎么做盗版视频网站吗,erp定制开发价格1. GenericAPIView [通用视图类]#xff0c;概述 继承自 APIView增加了操作序列化器和数据库查询的方法#xff0c;作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时#xff0c;可搭配一个或者多个Mixin扩展类源码 当我们查看 GenericAPIView 的源码时#xff0c…1. GenericAPIView [通用视图类]概述 继承自 APIView增加了操作序列化器和数据库查询的方法作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时可搭配一个或者多个Mixin扩展类源码 当我们查看 GenericAPIView 的源码时发现他也是继承了views.APIView class GenericAPIView(views.APIView):Base class for all other generic views.# Youll need to either set these attributes,# or override get_queryset()/get_serializer_class().# If you are overriding a view method, it is important that you call# get_queryset() instead of accessing the queryset property directly,# as queryset will get evaluated only once, and those results are cached# for all subsequent requests.queryset Noneserializer_class None# If you want to use object lookups other than pk, set lookup_field.# For more complex lookup requirements override get_object().lookup_field pklookup_url_kwarg None# The filter backend classes to use for queryset filteringfilter_backends api_settings.DEFAULT_FILTER_BACKENDS# The style to use for queryset pagination.pagination_class api_settings.DEFAULT_PAGINATION_CLASSdef get_queryset(self):Get the list of items for this view.This must be an iterable, and may be a queryset.Defaults to using self.queryset.This method should always be used rather than accessing self.querysetdirectly, as self.queryset gets evaluated only once, and those resultsare cached for all subsequent requests.You may want to override this if you need to provide differentquerysets depending on the incoming request.(Eg. return a list of items that is specific to the user)assert self.queryset is not None, (%s should either include a queryset attribute, or override the get_queryset() method.% self.__class__.__name__)queryset self.querysetif isinstance(queryset, QuerySet):# Ensure queryset is re-evaluated on each request.queryset queryset.all()return querysetdef get_object(self):Returns the object the view is displaying.You may want to override this if you need to provide non-standardqueryset lookups. Eg if objects are referenced using multiplekeyword arguments in the url conf.queryset self.filter_queryset(self.get_queryset())# Perform the lookup filtering.lookup_url_kwarg self.lookup_url_kwarg or self.lookup_fieldassert lookup_url_kwarg in self.kwargs, (Expected view %s to be called with a URL keyword argument named %s. Fix your URL conf, or set the .lookup_field attribute on the view correctly. %(self.__class__.__name__, lookup_url_kwarg))filter_kwargs {self.lookup_field: self.kwargs[lookup_url_kwarg]}obj get_object_or_404(queryset, **filter_kwargs)# May raise a permission deniedself.check_object_permissions(self.request, obj)return objdef get_serializer(self, *args, **kwargs):Return the serializer instance that should be used for validating anddeserializing input, and for serializing output.serializer_class self.get_serializer_class()kwargs.setdefault(context, self.get_serializer_context())return serializer_class(*args, **kwargs)def get_serializer_class(self):Return the class to use for the serializer.Defaults to using self.serializer_class.You may want to override this if you need to provide differentserializations depending on the incoming request.(Eg. admins get full serialization, others get basic serialization)assert self.serializer_class is not None, (%s should either include a serializer_class attribute, or override the get_serializer_class() method.% self.__class__.__name__)return self.serializer_classdef get_serializer_context(self):Extra context provided to the serializer class.return {request: self.request,format: self.format_kwarg,view: self}def filter_queryset(self, queryset):Given a queryset, filter it with whichever filter backend is in use.You are unlikely to want to override this method, although you may needto call it either from a list view, or from a custom get_objectmethod if you want to apply the configured filtering backend to thedefault queryset.for backend in list(self.filter_backends):queryset backend().filter_queryset(self.request, queryset, self)return querysetpropertydef paginator(self):The paginator instance associated with the view, or None.if not hasattr(self, _paginator):if self.pagination_class is None:self._paginator Noneelse:self._paginator self.pagination_class()return self._paginatordef paginate_queryset(self, queryset):Return a single page of results, or None if pagination is disabled.if self.paginator is None:return Nonereturn self.paginator.paginate_queryset(queryset, self.request, viewself)def get_paginated_response(self, data):Return a paginated style Response object for the given output data.assert self.paginator is not Nonereturn self.paginator.get_paginated_response(data)2.get_serializer_class(self) 当出现一个视图类中调用多个序列化器时那么可以通过条件判断在 get_serializer_class 方法中通过返回不同的序列化 器类名就可以让视图方法执行不同的序列化器对象了函数返回序列化器类默认返回 serializer_class 可以重写 def get_serializer_class(self):Return the class to use for the serializer.Defaults to using self.serializer_class.You may want to override this if you need to provide differentserializations depending on the incoming request.(Eg. admins get full serialization, others get basic serialization)assert self.serializer_class is not None, (%s should either include a serializer_class attribute, or override the get_serializer_class() method.% self.__class__.__name__)return self.serializer_class3.get_serializer_class(self) 函数返回序列化器队对象主要用来提供给Mixin扩展类使用如果我们在视图中想要获取序列化器对象也可以直接调用此方法注意该方法在提供序列化器对象的时候会向序列化器对象的context属性补充三个数据request、 format、view、这三个数据对象可以定义序列化器时使用 request 当前视图的请求对象view 当前请求的类视图对象format 当前请求期望返回的数据格式 def get_serializer(self, *args, **kwargs):Return the serializer instance that should be used for validating anddeserializing input, and for serializing output.serializer_class self.get_serializer_class()kwargs.setdefault(context, self.get_serializer_context())return serializer_class(*args, **kwargs)4.get_queryset(self) 返回视图使用的查询集主要用来提供Mixin扩展类使用是列表视图与详情视图获取数据的基础默认返回queryset属性可以重写 def get_queryset(self):Get the list of items for this view.This must be an iterable, and may be a queryset.Defaults to using self.queryset.This method should always be used rather than accessing self.querysetdirectly, as self.queryset gets evaluated only once, and those resultsare cached for all subsequent requests.You may want to override this if you need to provide differentquerysets depending on the incoming request.(Eg. return a list of items that is specific to the user)assert self.queryset is not None, (%s should either include a queryset attribute, or override the get_queryset() method.% self.__class__.__name__)queryset self.querysetif isinstance(queryset, QuerySet):# Ensure queryset is re-evaluated on each request.queryset queryset.all()return queryset5.def get_object(self): 返回详情视图所需要的模型类的数据对象主要用来提供给Mixin扩展类使用在视图中可以调用该方法获取详情信息的模型对象若详情访问的模型类对象不存在会返回404该方法会默认使用APIView提供的check_object_permissions方法检查当前对象是否有权限被访问 def get_object(self):Returns the object the view is displaying.You may want to override this if you need to provide non-standardqueryset lookups. Eg if objects are referenced using multiplekeyword arguments in the url conf.queryset self.filter_queryset(self.get_queryset())# Perform the lookup filtering.lookup_url_kwarg self.lookup_url_kwarg or self.lookup_fieldassert lookup_url_kwarg in self.kwargs, (Expected view %s to be called with a URL keyword argument named %s. Fix your URL conf, or set the .lookup_field attribute on the view correctly. %(self.__class__.__name__, lookup_url_kwarg))filter_kwargs {self.lookup_field: self.kwargs[lookup_url_kwarg]}obj get_object_or_404(queryset, **filter_kwargs)# May raise a permission deniedself.check_object_permissions(self.request, obj)return obj5. 使用实例 view.py from rest_framework.generics import GenericAPIViewclass BookSerializers(serializers.ModelSerializer):class Meta:model Bookfields __all__class BookView(GenericAPIView):# queryset 这个变量名称不能变queryset Book.objects.all()# # serializer_class 这个变量名称不能变serializer_class BookSerializers# 查所有def get(self, request):# get_queryset() 就是取 queryset 这个变量的值即 Book.objects.all()取出所有的数据# book_list self.get_queryset()# 构建序列化器对象# serializer self.get_serializer_class()(instanceself.get_queryset(), manyTrue)serializer self.get_serializer(instanceself.get_queryset(), manyTrue)return Response(serializer.data)# 增加一个def post(self, request):# 获取参数data request.data# 构建序列化器对象serializer self.get_serializer(datadata)# 校验数据# 校验原理# 1.所有符合的数据都放在serializer.validated_data# 2.不符合数据的都放在serializer.errorsif serializer.is_valid(): # 返回一个布尔值所有字段都符合才返回True,反之返回False# 数据校验通过存入数据库中# new_book Book.objects.create(**serializer.validated_data)serializer.save()return Response(serializer.data)else:# 数据校验失败return Response(serializer.errors)class BookDetailsView(GenericAPIView):# queryset 这个变量名称不能变queryset Book.objects.all()# # serializer_class 这个变量名称不能变serializer_class BookSerializers# 查一个def get(self, request, pk):serializer self.get_serializer(instanceself.get_object(), manyFalse)return Response(serializer.data)# 修改一个def put(self, request, pk):book request.data# 构建序列化器对象serializer self.get_serializer(instanceself.get_object(), databook)if serializer.is_valid():serializer.save()return Response(serializer.data)else:return Response(serializer.errors)# 删除一个def delete(self, request, pk):self.get_object().delete()return Response()urls.py from django.contrib import admin from django.urls import path, re_path from sers import viewsurlpatterns [path(admin/, admin.site.urls),path(sers/book/, views.BookView.as_view()),# 注意 这块是固定的pkre_path(rsers/book/(?Ppk\d), views.BookDetailsView.as_view()), ]
http://www.dnsts.com.cn/news/186482.html

相关文章:

  • 网站是哪个公司做的郑州公司建网站
  • 免费推广网站大全下载杭州建设信息港官网
  • 网站排名如何做厦门行业网站建设
  • 企业网站的基本内容有哪些king cms网站建设
  • 新乡个人网站建设价格wordpress 获取栏目名称
  • 北京网站建设seo优化Wordpress生成密码加密方式
  • 网站死链怎么删除植物设计网站推荐
  • 汕头网站推广系统搜索seo神器
  • 伪装学渣无极网站企业文化建设方案
  • 网站经营许可备案网站排名优化软件哪家好
  • 网站空格键代码怎样看网站的建设时间
  • 我的世界的家怎么做视频网站免费做app的软件有哪些
  • 手机网站模板尺寸有什么网站专做买生活污水设备
  • 移动端网站和app区别wordpress出现不能登录
  • 廊坊建设网站做视频小网站犯法吗
  • 社交网站建设网站中国互联网头部企业
  • 敦煌网站外引流怎么做微信小程序什么时候上线的
  • 网站内容企业vi设计是啥
  • 网站开发及app开发都需要多少钱商城购物网站定制
  • 建站网站建设西安做网站多少钱
  • 安顺住房和城乡建设部网站淘宝网站推广方案
  • html5网站赏析搜索引擎优化的简写是
  • 微网站是什么意思延安网站建设推广微信网站
  • 网站服务器租用做文字logo的网站
  • 网站开发如何共用菜单栏合肥建设局网站首页
  • 申请网站官网网站具体流程
  • 网站开发设计方案书模板商城建站
  • 个人网店和网站的区别深圳网站设计按天收费
  • 网站制作经典案例顺德哪家做网站
  • 网站建设中故障排除方法微信做淘宝客网站有哪些