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

个人宽带 架设网站需备案wordpress怎么制作响应式

个人宽带 架设网站需备案,wordpress怎么制作响应式,购物网站后台流程图,深圳东门步行街地铁站首 前后端分离是互联网应用开发的标准使用方式#xff0c;让前后端通过接口实现解耦#xff0c;能够更好的进行开发和维护。 RESTful接口常见规范 在接口设计中#xff0c;大家遵循一定的规范可以减少很多不必要的麻烦#xff0c;例如url应有一定辨识度#xff0c;可以… 首 前后端分离是互联网应用开发的标准使用方式让前后端通过接口实现解耦能够更好的进行开发和维护。 RESTful接口常见规范 在接口设计中大家遵循一定的规范可以减少很多不必要的麻烦例如url应有一定辨识度可以加入api等关键词路径中尽量不要含有动词根据请求方式对业务逻辑进行划分等等如 请求方式数据库操作描述GETSELECT获取数据POSTCREATE添加数据PUTUPDATE更新数据DELETEDELETE删除数据 DRF安装 安装命令 pip install djangorestframework settings.py注册 INSTALLED_APPS [rest_framework,... ] 视图编写 app/views.py from rest_framework.views import APIView from rest_framework.response import Responseclass IndexView(APIView):def get(self, request):res dict()res[mes] successres[data] 123return Response(res) 视图函数变成了视图类需要继承APIView。可在类内部分别定义getpost等请求函数视图会根据请求方式映射不同处理函数。 路由配置 每条路由对应一个视图函数故需将视图类转为视图函数 urls.py from django.contrib import admin from django.urls import path from app1 import viewsurlpatterns [path(admin/, admin.site.urls),path(index/, views.IndexView.as_view()), ] 访问指定路由后 DRF框架自带的接口界面很好看也便于调试。 序列化操作 将数据库数据整理为接口返回数据的过程很繁琐DRF简化了序列化操作。 定义model/app/models.py from django.db import models# Create your models here. class Player(models.Model):id models.AutoField(primary_keyTrue)name models.CharField(max_length20) 定义了player模型两个字段id和name。为了方便后台操作我们将其进行admin注册app/admin.py from django.contrib import admin from app.models import Player # Register your models here.admin.site.register(Player) 记得进行数据迁移之后便可在admin管理界面看到Player表格登录admin管理系统需要创建用户创建命令 python manage.py createsuperuser 按提示注册后登录admin管理界面 可以看到创建的表格手动添加两条数据。如果我们希望返回所有player信息视图应该这么写app/views.py: from rest_framework.views import APIView from rest_framework.response import Response from app1.models import Playerclass PlayersView(APIView):def get(self, request):players Player.objects.all()res list()for p in players:t dict()t[id] p.idt[name] p.nameres.append(t)return Response(res) 字段较少的时候无妨字段太多的时候这是个让人抓狂的操作。 可以先编写一个序列化类app/serializer.py: from rest_framework import serializers from app1.models import Playerclass PlayersModelSerializer(serializers.ModelSerializer):class Meta:modelPlayer# fields__all__fields (id, name) 此类用于对Player进行序列化Meta类中只需指明指定模型以及想要序列化的字段即可fields的all参数指所有字段。 视图修改app/views.py: from rest_framework.views import APIView from rest_framework.response import Response from app1.models import Player from app1.serializers import PlayersModelSerializerclass PlayersView(APIView):def get(self, request):players Player.objects.all()# 创建序列化对象many指多条数据players_json PlayersModelSerializer(players, manyTrue)print(players_json.data)# data返回序列化后的数据return Response(players_json.data) 设置路由后访问结果 ModelSerializer只是对模型进行序列化如果对其以外复杂结构进行序列化可以继承Serializer类逐个字段进行手动编写以及序列化嵌套等等不在赘述。 Mixins类改进 Django的mixins实现了各种功能让其他函数继承能够让用户用更少的代码操作模型一般会配合GenericAPIView使用Mixin有五类 类描述请求方法ListModelMixin返回查询集列表提供list方法GETCreateModelMixin创建实例提供create()方法POSTRetrieveModelMixin返回一个具体实例提供retrieve()方法GETUpdateModelMixin更新实例提供update()方法PUT、PATCHDestoryModelMixin删除实例提供delete()方法DELETE 同样实现上面返回player列表的功能视图可以这样写app/views.py from rest_framework import mixins, generics from app1.models import Player from app1.serializers import PlayersModelSerializerclass PlayersView(mixins.ListModelMixin, generics.GenericAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerdef get(self, request):return self.list(request) queryset和serializer_class是要操作的数据集合序列化类GenericAPIView需要的参数。因为ListModelMixin提供了list函数get请求视图的返回结果可以直接调用。这里的执行结果与上面相同。(如果queryset需要条件查询需要重写get_queryset函数。 如果是添加数据则 from rest_framework import mixins, generics from app1.models import Player from app1.serializers import PlayersModelSerializerclass PlayersView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerdef get(self, request):return self.list(request)def post(self, request):return self.create(request) 提供name参数即可添加成功。 另外三个Mixin类使用相同因为要对指定数据进行修改故需提供词条数据的pk主键来找到此条数据。app/views.py) class PlayerDetailView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin,generics.GenericAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerdef get(self, request, *args, **kwargs):return self.retrieve(request, *args, **kwargs)def put(self, request, *args, **kwargs):return self.update(request, *args, **kwargs)def delete(self, request, *args, **kwargs):return self.destroy(request, *args, **kwargs) 路由需要提供pk参数urls.py) urlpatterns [path(players/int:pk/, views.PlayerDetailView.as_view()),... ]如果想要通过其他字段查找数据需要提供lookup_field参数指明要查找的字段查询结果多于一条时会报错 class PlayerDetailView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin,generics.GenericAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerlookup_field namedef get(self, request, *args, **kwargs):return self.retrieve(request, *args, **kwargs)def put(self, request, *args, **kwargs):return self.update(request, *args, **kwargs)def delete(self, request, *args, **kwargs):return self.destroy(request, *args, **kwargs) urlpatterns [path(players/name/, views.PlayerDetailView.as_view()),... ] GenericAPIView类 GenericAPIView还有许多子类直接将Mixins和GenericAPIView进行了组合有这么多 类提供方法 CreateAPIView postListAPIViewgetRetrieveAPIViewgetDestroyAPIViewdeleteUpdateAPIViewput, patchListCreateAPIViewget, postRetrieveUpdateAPIViewget, put, patchRetrieveDestroyAPIViewget, delete, patchRetrieveUpdateDestroyAPIViewget, put, delete, patch 上面的试图类可以这么写 class PlayerDetailView(generics.RetrieveUpdateDestroyAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerlookup_field name 言简意赅。 自定义返回数据 DRF提供了自定义返回类可以自己编写也可以硬往里赛东西比如 def get(self, request, *args, **kwargs):res dict()res[mes] successres[data] self.list(request, *args, **kwargs).datareturn Response(res) 把原来Response中的data取出来重新塞点东西再返回。 分页 DRF有三个分页方式这里说一个PageNumberPagination创建一个分页类app/paginations.py from rest_framework.pagination import PageNumberPaginationclass PlayerPagination(PageNumberPagination):page_size 2 # 每页显示的数据数量max_page_size 4 # 每页最多显示的数据数量page_size_query_param size # 显示数量的变量名page_query_param page # 页数的变量名如果访问localhost/player/?page2size3则会返回以三条数据分页的第二页内容 用户视图app/views.py: from rest_framework import mixins, generics from app1.models import Player from app1.serializers import PlayersModelSerializer from app1.paginations import PlayerPaginationclass PlayersView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):queryset Player.objects.all()serializer_class PlayersModelSerializerpagination_class PlayerPaginationdef get(self, request, *args, **kwargs):return self.list(request, *args, **kwargs) 尾 一般APIView配合序列化就能很好开发接口Mixins和GenericAPIView少不了几行代码且queryset和response部分限制较多自定义覆盖原方法的代码也就差不多把少的几行代码补回了如果需要分页功能可以用GenericAPIView编写。
http://www.pierceye.com/news/735573/

相关文章:

  • 网站开通申请wordpress图片分享
  • 提高网站性能网站建设中源代码
  • 海珠营销型网站建设公司山东城建建设职业学院教务网站
  • 怎样用虚拟主机建网站温州购物网络商城网站设计制作
  • 站外seo推广游戏模板 wordpress
  • 做翻译网站 知乎怎么制作网站主题
  • 照片书那个网站做的好重庆网站建设价格费用
  • 网站两侧广告石家庄建设
  • 网站设计的企业网站建设教程txt
  • 大型建站公司seo查询5118
  • 百度站长提交工具中小企业建站模板
  • 企业网站西安seo服务
  • 做网站需要多少个人网站logo设计
  • 新浪云 建设网站中企动力双语网站
  • 网站建设中心网站开发前端工程师
  • 网站目录结构设计应注意的问题课程平台网站建设报价
  • 南京网站排名优化费用做网站大作业的心得体会
  • 网站 三合一高端的响应式网站建设公司
  • 网站设计公司天津网站备案不关站
  • 怎样增加网站会员量微信商城怎么进入
  • 网站建设目的功能行业门户网站源码
  • 建设网站收费标准100m做电影网站
  • 怎么样自己做最简单的网站wordpress酷黑主题
  • 长沙市建设网站网站修改域名
  • 邢台企业做网站价格如何做网络推广运营
  • 番禺网站建设服务百度广告推广价格
  • 什么系统做网站最安全网络科技网站设计
  • 通州网站建设是什么查看网站开发商
  • 建设网站公司浩森宇特怎么推广公司网站
  • 来宾住房和城乡建设网站变装第三性wordpress