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

网站开发业务怎么做/宁波seo外包服务商

网站开发业务怎么做,宁波seo外包服务商,视频拍摄剪辑培训,seo关键词推广多少钱所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件…

所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样,随后使用tree命令就可以查看文件夹目录层级。

那么这种层级结构也成为树结构在日常的开发需求里也是很常见的,比如美多商城系统的商品分类,课程的目录章节,以及以及论坛里的帖子回复等等,本次我们后台利用Django来写一个能够返回层级结构数据的接口,接口将该数据以json的形式返回前端,前端使用vue的组件递归来展示数据。

一.首先,打开django项目中的models.py,新建一个类别的模型类,这里我们以最简单的parentid的形式来建立

class Cate(models.Model):    #主键 通过参数声明主键    id = models.AutoField(primary_key=True)    #分类名称    name = models.CharField(max_length=500)    #父级id    pid = models.IntegerField()    #表名    class Meta:        db_table = 'cate'

二.由于我们的项目基于drf框架,所以要增加一个序列器类,如果你的项目没有用drf,可以直接用json模块来进行序列化

from rest_framework import serializersfrom myapp.models import Cateclass CateSer(serializers.ModelSerializer):    class Meta:        model = Cate        fields = "__all__"

三.由于django序列化出来的类不具备层级结构,所以我们提前写好一个用来递归的方法

def xTree(datas):    lists=[]    tree={}    parent_id=''    for i in datas:        item=i        tree[item['id']]=item    root=None    for i in datas:        obj=i        if not obj['pid']:            root=tree[obj['id']]            lists.append(root)        else:            parent_id=obj['pid']            if 'childlist' not in tree[parent_id]:                   tree[parent_id]['childlist']=[]            tree[parent_id]['childlist'].append(tree[obj['id']])    return lists

四.此时我们写一个视图接口,用来从数据库中读取数据

class MyTree(APIView):    def get(self,request):        #获取订单列表        catelist = Cate.objects.filter()        #序列化        catelist_ser = CateSer(catelist,many=True)        mylist= xTree(catelist_ser.data)        return Response(mylist)

五.请在mysql库里存一些测试数据

8b285e3e176403b5399058f881f15a90.png

六.测试一下接口,看看是否以json的形式返回了层级结构

a81b1cd15559882f75d249b389f41737.png

七.ok,接口没有问题,现在我们把目光投向前端,打开vue项目,新建一个Reply.vue组件。所谓递归组件: 就是组件可以在它们自己的模板中调用自身,不过它们只能通过 name 选项来做这件事,例如给组件设置属性 name: 'Reply',然后在模板中就可以使用 Reply 调用自己进行递归调用了

{{ data.name }}

八. 然后在其他任意组件中调用该Reply.vue组件,传入刚刚写好的接口数据

九.最后请求页面,可以看到展示的效果:

047417bf0102baf1dc08566cf5760a6c.png

当然了,vue组件也可以间接的调用自己实现递归,这涉及到组件之间的循环引用,这样比较麻烦,可读性也间接的降低了不少。

http://www.jmfq.cn/news/4857769.html

相关文章:

  • 网站开发 开题报告/网络品牌推广
  • 洛阳网站推广怎么做/在线工具seo
  • 我在相亲网站做红娘的/网站推广建设
  • 做动画网站去哪采集/网络舆情案例分析
  • 互联网网站备案/怎么做网站推广和宣传
  • 沈阳网站建设价格/一站式推广平台
  • 深圳手机商城网站设计/河南网站推广公司
  • 网站建设品牌好/百度销售系统登录
  • 网站劫持必须做系统嘛/品牌运营包括哪些内容
  • 专做网站的公司/加强服务保障 满足群众急需需求
  • 湖州高端网站设计/知乎营销推广
  • 青州做网站的网络公司/外链网盘系统
  • 专业足球网站建设/网推平台
  • 移动互联网技术网站/推广发帖网站
  • wordpress移动导航栏设置/长沙seo优化推荐
  • 网页设计网站模板/百度热搜榜今日头条排名
  • 做内贸什么网站资源比较多/市场营销图片高清
  • 需要做网站建设的公司/百度知道首页网
  • 广东企业网站建设公司价格/外链链接平台
  • 论述网站建设流程/正规网站优化公司
  • 网站模板文件怎么下载/廊坊seo排名优化
  • 网站开发协议/广州今天刚刚发生的重大新闻
  • 专业做面膜的网站/seo课培训
  • wordpress跳转外链/西安优化排名推广
  • 苏州网站建设制作服务商/产品推广方法
  • 开源建站系统cms/谷歌代运营
  • 网站建设公司出路/怎么自己建立网站
  • chn域名网站/长春百度seo公司
  • 有口碑的武进网站建设/推广注册app拿佣金
  • 政务网站开发/搜索引擎优化的方法