Django ORM总结源码(测试)

from django.shortcuts import render
from django.shortcuts import HttpResponse
from usermange.models import UserInfo

# Create your views here.
def test(request):
    # 方法一:
    UserInfo(uname='gaofei',uage=11).save()

    # 方法二
    userobj = UserInfo()
    userobj.uname = 'zhang3'
    userobj.uage = 22
    userobj.save()

    # 方法三
    UserInfo.objects.create(uname='li4',uage=23)

    #方法四
    userobj1 = UserInfo.objects.get_or_create(uname='wang5', uage=24)
    print(userobj1)
    #(<UserInfo: UserInfo object (4)>, True)   #第一次保存数据
    # (< UserInfo: UserInfo object (4) >, False)    #第二次保存数据,结果为False

    # 方法五:推荐使用
    dicts = {'uname':'gaofeifeifei','uage':'22'}
    UserInfo(**dicts).save()


    #===数据的修改
    #批量更新:谨慎使用,如果数据量小最好用单个跟新
    UserInfo.objects.filter(id=7).update(uname='gaofeifei')

    # 单个更新,自动时间的跟新只支持单个跟新不支持批量跟新
    userobj2 = UserInfo.objects.filter(id=7)[0]
    userobj2.uname = 'gaofei'
    userobj2.save()

    #跟新或者创建
    userobj3 = UserInfo.objects.update_or_create(uname='li4',uage=23)        #和get_or__create类似,没有创建,有跟新
    print(userobj3)             #<UserInfo: UserInfo object (3)>, False)    #已经存在

    # 数据的删除
    #批量删除
    UserInfo.objects.filter(uname='gaofeifei').delete()  #删除满足条件的
    UserInfo.objects.all().delete()     #删除所有
    #单个删除
    userobj5 = UserInfo.objects.get(id = 8)
    userobj5.delete()   #虽然是两句话,但是执行的是一个sql语句
    # 执行的sql语句为:
    # DELETE FROM `usermange_userinfo` WHERE `usermange_userinfo`.`id` IN(8)

    # ===数据的查询
    # 1、---查询所有数据的方法
    datas1 =  UserInfo.objects.all()      #返回类型QquerySet,内部是所有对象的集合
    datas2 = UserInfo.objects.values()      #返回列表类型,是对象对应字典为元素的列表
    print(type(datas1),'==>',datas1)
    print(type(datas2),'==>',datas2)

    # ----注意,对于返回值类型为QuerySet类型的数据,可以使用切片进行截取数据
    print(datas1[2])   #获取下表索引为2的数据对象 使用了sql
    print(datas1[1:3])   #获取下表1到3(取左不取右)的对象集合,类型为QuerySets   使用了python内部的排序
    print(datas1[1:3:-1])    #倒序输出对象列表   使用了python的倒叙排列

    # 2 按照条件查询数据
    # --filter
    datas3 = UserInfo.objects.filter(uname='li4', uage=23)  #获取同时满足参数的数据QuerySet集合

    #链式查找
    UserInfo.objects.filter(uname__contains='li')   #模糊查询
    UserInfo.objects.filter(uname__icontains='li')  #忽略大小写模糊查询
    UserInfo.objects.filter(uname__regex= 'li4$')   #正则匹配
    UserInfo.objects.filter(uname__iregex= 'li4$')  #忽略大小写正则匹配
    UserInfo.objects.filter(uname__exact='li4')     #全匹配
    UserInfo.objects.filter(uname__iexact='li4')    #忽略大小写全匹配
    UserInfo.objects.filter(uname__startswith='l')  #以。。。开头
    UserInfo.objects.filter(uname__istartswith='l') #忽略大小写,以。。。开头
    UserInfo.objects.filter(uname__endswith='l')    #以。。。结束
    UserInfo.objects.filter(uname__iendswith='l')   #忽略大小写,以。。。结束
    UserInfo.objects.filter(uname__in=('i','li4'))  #值是否在这个集合中,参数可以是列表,元组,集合
    UserInfo.objects.filter(uage__lt=5)             # 小于-------------------以下适用数字类型
    UserInfo.objects.filter(uage__lte=5)            #小于等于
    UserInfo.objects.filter(uage__gt=5)             #大于
    UserInfo.objects.filter(uage__gte=5)            #大于等于
    UserInfo.objects.filter(uage__range=(11,12))   #在11-12范围内,包含11和12
    UserInfo.objects.filter(ucdate__year=2018)      #年份是否为2018-----------以下适用日期类型
    UserInfo.objects.filter(ucdate__month=12)       #月份为12
    UserInfo.objects.filter(ucdate__day=10)         #日期为10
    print(UserInfo.objects.filter(ucdate__week_day= 1) )   #星期一    #the day of week from 1 (Sunday) to 7 (Saturday)
    print()

    UserInfo.objects.filter(ucdate__hour=12)        #12点
    UserInfo.objects.filter(ucdate__minute=20)      #20分
    UserInfo.objects.filter(ucdate__second=10)      #10秒





    #--get
    datas4 = UserInfo.objects.get(id = 6)   #获取同时满足参数的对象,如果查询结果为空或者有多条数据,报错
    dataobj1 = UserInfo.objects.first()     #返回第一个对象
    dataobj2 = UserInfo.objects.last()      #返回最后一个对象

    #--exclude
    datas5 = UserInfo.objects.exclude(uname='li4')   #获取不满足条件的数据QuerySet集合\

    #reverse()
    datas6 = UserInfo.objects.all().reverse()   #获取反转后的结果集,类型为QuerySet,可以进行多次的reverse()

    #distinct()
    # datas7 = UserInfo.objects.values('uname','id').distinct()   #根据uname,id进行去重,返回去重后的QuerySet集合,内部为字典为元素的列表
    # print(datas7)
    #
    # #order_by()
    datas8 = UserInfo.objects.all().order_by('id') #根据id进行升序排序      返回结果为QuerySet,对象集合
    datas8 = UserInfo.objects.all().order_by('-id') #根据id进行降序配许

    #count()
    data9 = UserInfo.objects.all().count()      # 统计结果数量 #通过sql语句
    data9 = UserInfo.objects.values().count()
    data9 = UserInfo.objects.count()

    #exists()
    datas10 = UserInfo.objects.all().exists()   #是否查询到数据,这个还是通过sql查询所有数据,如果返回有值为True,否则为False
    datas10 = UserInfo.objects.values().exists()
    datas10 = UserInfo.objects.filter(id=6).exists()

    #values_lists()
    datas11 = UserInfo.objects.values_list()    #返回的结果集(QuerySet内部为结果元组为元素组成的列表)



    print(type(datas4),'==>',datas4)

    return HttpResponse('Success!')

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Django和Vue是两个流行的Web开发框架,Django是用Python编写的后端框架,Vue是用JavaScript编写的前端框架。 Django和Vue的源码包含了许多有用的组件和工具,可以帮助开发者创建高效、可靠和安全的Web应用程序。它们的源码都是开源的,意味着任何人都可以查看、修改和贡献改进代码。 Django源码包括了许多模板、中间件和视图,这些都是用来协助开发者构建Web应用程序的基础组件。它还包括了许多与安全、表单处理和用户身份验证相关的功能,这些对于创建安全的Web应用程序至关重要。 Vue的源码包括了许多组件,如路由、状态管理和指令等,这些都是用来构建复杂的交互式Web应用程序的基础组件。它还提供了一些有用的开发工具,如调试器和测试工具,用于简化开发过程。 Django和Vue的源码可以相互结合使用,以创建全栈Web应用程序,其中Django作为后端,用来处理业务逻辑和数据持久化,Vue作为前端,用来呈现数据和实现交互。使用这种方法,开发者可以创建现代化、高效和灵活的Web应用程序,满足不同的商业需求。 ### 回答2: Django Vue源码指的是使用Django作为后端框架,Vue作为前端框架,结合开发的web应用程序的源代码。Django是一个高度灵活的Python框架,可以轻易地进行数据库、表单、用户身份验证等操作,Vue则是一个开源的JavaScript框架,用于开发单页面应用程序。 Django Vue源码的优点在于,它结合了Django和Vue的两种技术,使得开发人员可以轻松构建功能强大、易于维护的Web应用程序。借助Vue的庞大生态系统,开发人员可以选择一系列易于集成的开源组件,从而加快开发速度。通过使用Vue提供的UI库,可以快速创建出高度响应的界面,增强用户体验。 此外,Django Vue源码具有高度可配置性和可定制性。Django提供了诸如REST框架、ORM等功能,让开发人员可以按照自己的需求来构建API接口,Vue则提供了Vuex和Vue Router等组件,帮助人员实现更加复杂的Web应用程序功能。 总的来说,Django Vue源码是一种强大的技术组合,能够让开发人员更加便捷地开发高度可定制化的Web应用程序。 ### 回答3: Django Vue源码是一个结合了Django和Vue框架的开源项目,它的主要目的是实现快速构建现代化Web应用程序。该项目的源码可以在Github上找到。 Django Vue源码是基于Django REST框架和Vue.js构建的,它提供了一种方便的方法来构建Web应用程序,可以轻松地创建SPA(单页应用程序)或MPA(多页应用程序),并且同时提供了Django框架的可靠性和Vue框架的灵活性。 该项目的前端部分是基于Vuejs框架构建的,使得开发人员可以利用Vuejs框架的各种功能特性,如组件化、数据驱动、虚拟DOM等等,来开发丰富的用户界面。同时,后端采用Django REST框架,通过RESTful API的方式与前端进行交互。 通过Django Vue源码,开发人员可以快速搭建一个完整的Web应用程序,通过Vue.js构建前端用户交互界面,并且可以实现与后端API交互,完成数据的传输和操作。 值得一提的是,Django Vue源码还与Bootstrap框架结合使用,提供了丰富的UI组件库,使得开发界面更加快捷和美观。 总的来说,Django Vue源码是一个提供了高效、灵活、可靠的方案,用于快速搭建现代化Web应用程序的开源项目,值得开发人员深入学习和探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值