在工作中,逐渐多的出现不使用页面展示数据,直接使用数据接口,这样有以下好处:
首先可以实现动静分离,将数据库的查询和页面的渲染彻底分开。
网站可以支持批量的脚本开发。
最原始的接口搭建是使用类视搭建接口,但接口的规范很难约束,接着就出现了接口框架。使用框架进行规范的接口开发即restful,django具有restful的插件(djangorestframewor。下面来具体实现开发一个接口。
接口开发步骤
安装插件
注意:使用接口尽量需要有数据库模型
编写接口逻辑
创建序列化,在对应APP下创建serializers.py.(名称可任意,但是通常项目中会这样写)
1. #当前文件只是为了规定接口模型和数据字段2. from django.contrib import admin3. from django.urls import path,include,re_path4. from Buyer.views import index5. from Store.models import Goods6. from Store.models import GoodsType8. from rest_framework import routers, serializers, viewsets9. #导入框架11. # Serializers define the API representation.12. classUserSerializer(serializers.HyperlinkedModelSerializer):13. '''14. 声明数据15. '''16. classMeta: #元类17. model = Goods #要进行接口序列化的模型18. fields = ['goods_name', 'goods_price', 'goods_number', 'goods_description'] #序列要返回的字段20. classGoodsTypeSerializer(serializers.HyperlinkedModelSerializer):21. '''22. 声明查询的表和返回的字段23. '''24. classMeta:25. model = GoodsType26. fields = ['name','description']
对应APP的views下:在这是通过url指向,所以更类似于视
1. from rest_framework import viewsets2. from Store.Serializers import *3. # ViewSets define the view behavior.4. #当前部分还是执行接口的查询逻辑5. classUserViewSet(viewsets.ModelViewSet):6. queryset = Goods.objects.all() #具体返回的数据7. serializer_class = UserSerializer #指定过滤的类8. classTypeViewSet(viewsets.ModelViewSet):9. '''10. 返回具体查询的内容11. '''12. queryset = GoodsType.objects.all()#查询所有数据13. serializer_class = GoodsTypeSerializer#需要的数据需要从这里找
url指出接口
1. from Store.views import UserViewSet2. from Store.views import TypeViewSet3. from rest_framework import routers4. router = routers.DefaultRouter() #声明一个默认的路由注册器5. router.register(r'goods',UserViewSet) #注册写好的接口视图6. router.register(r'goodsType',TypeViewSet) #注册写好的接口视图9. urlpatterns = [10. path('admin/', admin.site.urls),11. path('Store/', include('Store.urls')),12. path('Buyer/', include('Buyer.urls')),13. path('ckeditor/',include('ckeditor_uploader.urls')),14. re_path('^API', include(router.urls)), #restful 的根路由15. re_path('^api-auth',include('rest_framework.urls')) #接口认真16. ]
按照功能对项目进行划分:
创建serializers文件用来存放接口的过滤器。
在视当中查询接口要返回的数据,并指定过滤器。(views)
在路由中注册接口.
web端使用接口
通常要用到ajax和vue,数据通过接口返回,然后前端使用ajax进行请求,使用vue进行渲染
准备静态页面
编写视
路由指出
静态页面ajax访问接口
1. Vue.use(VueResource);#此处的Vue是使用VueResource中的Vue.2. var vue = new Vue(3. {4. el: '#goods',5. data: {6. goods_list: []7. },8. created:function () {9. this.$http.get('/APIgoods/').then(10. function (data) {11. this.goods_list = data.data;12. console.log(data.data)13. },14. function (error) {15. console.log(error)16. }17. )18. },19. methods: {21. }22. }23. );
文章为作者独立观点,不代表股票交易接口观点