python-基于diango和vue实现简单的增删改查以及类别树的实现

python-基于diango和vue实现简单的增删改查以及类别树的实现

最近学习django框架,展示一下学习成果
图一为商品的增删改查
展示图片1
》图二为类别树
图片展示2


以下为代码显示

#views层代码展示
def goGoodsInfo(request):
    return render(request, 'goodsinfo/goodsinfo.html')
    pass

def getGoodsInfo(request):
    goodsData = request.body.decode('utf-8')
    goodsDict = json.loads(goodsData)

    tGoods = TGoods()
    tGoods.goods_id = int(goodsDict.get('goodsId'))
    tGoods.goods_name = goodsDict.get('goodsName')
    opr =  goodsDict.get('opr')

    pageSize = int(goodsDict.get('pageSize'))
    currentPage = int(goodsDict.get('currentPage'))

    startRow = (currentPage - 1)*pageSize
    endRow   = pageSize*currentPage

    querySet = TGoods.objects
    updateResult = 0
    if opr == "delete":
        updateResult = tGoods.delete()
        pass
    elif opr == "update":
        result = TGoods.objects.filter(goods_id=tGoods.goods_id).values('goods_id','type_id','type_id__type_name','goods_name','goods_price',
                                                                        'goods_num', 'goods_sellnum','goods_discount' , 'goods_status',
                                                                        'goods_pic1','goods_pic2','goods_pic3')
        reResult = {
   'code': 1, 'data': result[0], 'pageSize': pageSize, 'currentPage': currentPage,
                    'totalPage': 0, 'counts': 0, 'updateResult': updateResult, 'opr':opr}
        return HttpResponse(json.dumps(reResult), content_type='application/json')
        pass
    elif opr == 'submitUpdate':
        updateResult = TGoods.objects.filter(goods_id=tGoods.goods_id).update(
            goods_name= tGoods.goods_name,
            goods_price=goodsDict.get('goodsPrice'),
            type_id=goodsDict.get('typeId'),
            goods_num=goodsDict.get('goodsNum'),
            goods_discount=goodsDict.get('goodsDiscount'),
            goods_status=goodsDict.get('goodsStatus'),
            goods_pic1=goodsDict.get('goodsPic1'),
            goods_pic2=goodsDict.get('goodsPic2'),
            goods_pic3=goodsDict.get('goodsPic3')
        )
        pass
    elif opr == "add":
        updateResult = TGoods.objects.create(goods_name = goodsDict.get('goodsName'),
                                             goods_price = goodsDict.get('goodsPrice'),
                                             type_id= goodsDict.get('typeId'),
                                             goods_num= goodsDict.get('goodsNum'),
                                             goods_discount= goodsDict.get('goodsDiscount'),
                                             goods_status= goodsDict.get('goodsStatus'),
                                             goods_pic1= goodsDict.get('goodsPic1'),
                                             goods_pic2= goodsDict.get('goodsPic2'),
                                             goods_pic3 = goodsDict.get('goodsPic3')
                                             )
        if updateResult:
            updateResult = 1
        else:
            updateResult = 0
        pass
    if tGoods.goods_name:
        querySet = querySet.filter(goods_name__contains = tGoods.goods_name)
        pass

    result = querySet.values('goods_id','type_id__type_name','goods_name','goods_price','goods_num', 'goods_sellnum','goods_discount' , 'goods_status','goods_pic1')[startRow:endRow]
    counts = querySet.count()

    totalPage = counts//pageSize if counts%pageSize == 0 else counts//pageSize+1

    reResult = {
   'code':1, 'data': list(result), 'pageSize':pageSize, 'currentPage':currentPage, 'totalPage':totalPage, 'counts':counts, 'updateResult':updateResult,'opr':opr}
    return HttpResponse(json.dumps(reResult), content_type='application/json')
    pass


def getGoodsType(request):
    dictData = json.loads(request.body.decode('utf-8'))

    parentId = dictData.get('parentId')
    goodsTypeId = dictData.get('goodsTypeId')
    goodsType   = dictData.get('goodsType')
    opr = dictData.get('opr')

    updateResult = 0
    if opr == 'delete':
        updateResult = TGoodsType.objects.filter(type_id=goodsTypeId).delete()
        pass
    if opr == 'submitUpdate':
        updateResult = TGoodsType.objects.filter(type_id=goodsTypeId).update(type_name=goodsType, type_parentid=parentId)
        pass
    if opr == "add":
        parentId = int(parentId)
        if parentId == 0:
            updateResult = TGoodsType.objects.create(type_name=goodsType)
        else:
            tGoodsType = TGoodsType()
            tGoodsType.type_id = parentId
            updateResult = TGoodsType.objects.create(type_name=goodsType, type_parentid=tGoodsType)
            # updateResult = tGoodsType.save()
            pass
        if updateResult:
            updateResult = 1
        else:
            updateResult = 0
        pass
    if opr == 'update':
        goodsType = list(TGoodsType.objects.filter(type_id=goodsTypeId).values('type_id', 'type_name', 'type_parentid', 'type_parentid__type_name'))
        reResult = {
   'code': 1, 'data': goodsType, 'updateResult': updateResult, 'opr': opr}

        return HttpResponse(json.dumps(reResult), content_type='application/json')
        pass

    dictTree = getGoodTypeTree(0, {
   })
    reResult = {
   'code': 1, 'data': dictTree, 'updateResult': updateResult, 'opr': opr}

    return HttpResponse(json.dumps(reResult), content_type='application/json')
    pass
# 递归获得所有的商品类别构造树形结构
def getGoodTypeTree(parentId, dictTree):
    if parentId == 0:
        dictTree = list(TGoodsType.objects.filter(type_parentid__isnull=True).values('type_id', 'type_name', 'type_parentid'))
        pass
    for node in dictTree:
        childNode = list(TGoodsType.objects.filter(type_parentid=node.get('type_id')).values('type_id', 'type_name', 'type_parentid'))
        if childNode:
            node['childNode'] = childNode
            getGoodTypeTree(node.get('type_id'), childNode)
            pass
        else:
            node['childNode']=[]
            pass
        pass
    return dictTree
    pass

// register the grid component
Vue.component('demo-grid', {
   
  template: '#goodsinfo-template',
  replace: true,
  props: {
   
    data: Array,
    columns: Array,
    columnsTitle: Object,
    filterKey: String,
    currentPage: Number,
    pageSize: Number,
    totalPage: Number,
    counts: Number,
  },
  data: function () {
   
    var sortOrders = {
   }
    console.log(this.columnsTitle.name)
    this.columns.forEach(function (key) {
   
      sortOrders[key] = 1
    })
    return {
   
      sortKey: '',
      sortOrders: sortOrders
    }
  },
  computed: {
   
    filteredData: function () {
   
      var sortKey = this.sortKey
      var filterKey = this.filterKey && this.filterKey.toLowerCase()
      var order = this.sortOrders[sortKey] || 1
      var data = this.data
      if (filterKey) {
   
        data = data.filter(function (row) {
   
          return Object.keys(row).some(function (key) {
   
            return String(row[key]).toLowerCase().indexOf(filterKey) > -1
          })
        })
      }
      if (sortKey) {
   
        data = data.slice().sort(function (a, b) {
   
          a = a[sortKey]
          b = b[sortKey]
          return (a === b ? 0 : a > b ? 1 : -1) * order
        })
      }
      return data
    }
  },
  filters: {
   
    capitalize: function (str) {
   
      return str.charAt(0).toUpperCase() + str.slice(1)
    }
  },
  methods: {
   
    sortBy: function (key) {
   
      this.sortKey = key
      this.sortOrders[key] = this.sortOrders[key] * -1
    },
   deleteGoods:  getGoodsInfo,
   updateGoods: function(currentPage, pageSize, opr, goodsId) {
   
        getGoodsInfo(currentPage, pageSize, opr, goodsId)
    },
    changPage: getGoodsInfo
  }
})
var demo = new Vue({
   
  el: '#demo',
  data: {
   
    searchQuery: '',
    gridColumns: ['goods_id', 'goods_name','goods_price','type_id__type_name','goods_num','goods_sellnum','goods_discount','goods_status', 'goods_pic1', 'goods_pic2', 'goods_pic3'],
    gridColumnsTitle: {
   
        'goods_id': '商品Id',
        'goods_name': '商品名称',
        'goods_price': '商品价格',
        'type_id__type_name': '商品类别',
        'goods_num': '商品库存',
        'goods_sellnum': '商品已售',
        'goods_discount': '商品折扣',
        'goods_status': '商品状态',
        'goods_pic1': '商品图片',
    },
    gridData: [],
    currentPage: 1,
    pageSize: 10,
    totalPage:0,
    counts:0,
  },
  methods:{
   

  }
})

function getGoodsInfo(currentPage, pageSize, opr
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python-Django-Vue项目实战是一种常见的全栈发模式,结合了PythonDjango框架和Vue.js前端框架。下面是一个简单的介绍: Python-Django是一个强大的Web开发框架,它使用Python语言编写,提供了一系列的工具和库来简化Web应用程序的开发过程。Django具有高度的可扩展性和灵活性,可以帮助开发者快速构建功能丰富的Web应用。 Vue.js是一个流行的JavaScript前端框架,它专注于构建用户界面。Vue.js具有简单易学的语法和强大的功能,可以帮助开发者构建交互性强、响应迅速的前端应用。 在Python-Django-Vue项目实战中,通常会将Django作为后端框架来处理数据逻辑和业务逻辑,而Vue.js则负责前端页面的展示和用户交互。通过这种方式,可以实现前后端分离,提高开发效率和代码可维护性。 具体的项目实战可以包括以下内容: 1. 构建Django后端:使用Django框架创建后端应用程序,包括定义数据模型、编写视图函数、配置URL路由等。 2. 开发Vue前端:使用Vue.js框架创建前端应用程序,包括设计页面布局、编写组件、处理用户交互等。 3. 数据交互:通过RESTful API或GraphQL等方式,实现前后端数据的交互和通信。 4. 用户认证和权限管理:实现用户注册、登录、权限验证等功能,确保系统的安全性。 5. 数据库操作:使用Django的ORM(对象关系映射)来进行数据库操作,包括增删改查等。 6. 页面美化和响应式设计:使用CSS和Vue.js的样式绑定功能,实现页面的美化和响应式设计。 7. 部署和发布:将项目部署到服务器上,并进行性能优化和安全加固。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值