Vue+Django(DRF)独立开发电商项目

基础篇

django-orm操作

进阶操作

获取个数
#
models.Tb1.objects.filter(name='seven').count()

大于,小于
#
models.Tb1.objects.filter(id__gt=1)              获取id大于1的值
models.Tb1.objects.filter(id__gte=1)              获取id大于等于1的值
models.Tb1.objects.filter(id__lt=10)             获取id小于10的值
models.Tb1.objects.filter(id__lte=10)             获取id小于10的值
models.Tb1.objects.filter(id__lt=10, id__gt=1)   获取id大于1 且 小于10的值

in
#
models.Tb1.objects.filter(id__in=[11, 22, 33])   获取id等于11、22、33的数据
models.Tb1.objects.exclude(id__in=[11, 22, 33])  not in

isnull
Entry.objects.filter(pub_date__isnull=True)

contains
#
models.Tb1.objects.filter(name__contains="ven")
models.Tb1.objects.filter(name__icontains="ven") icontains大小写不敏感
models.Tb1.objects.exclude(name__icontains="ven")

range
#
models.Tb1.objects.filter(id__range=[1, 2])   范围bettwen and

其他类似
#
startswith,istartswith, endswith, iendswith,

order by
#
models.Tb1.objects.filter(name='seven').order_by('id')    asc
models.Tb1.objects.filter(name='seven').order_by('-id')   desc

group by
#
from django.db.models import Count, Min, Max, Sum
models.Tb1.objects.filter(c1=1).values('id').annotate(c=Count('num'))
SELECT "app01_tb1"."id", COUNT("app01_tb1"."num") AS "c" FROM "app01_tb1" WHERE "app01_tb1"."c1" = 1 GROUP BY "app01_tb1"."id"

limit 、offset
#
models.Tb1.objects.all()[10:20]

regex正则匹配,iregex 不区分大小写
#
Entry.objects.get(title__regex=r'^(An?|The) +')
Entry.objects.get(title__iregex=r'^(an?|the) +')

date
#
Entry.objects.filter(pub_date__date=datetime.date(2005, 1, 1))
Entry.objects.filter(pub_date__date__gt=datetime.date(2005, 1, 1))

year
#
Entry.objects.filter(pub_date__year=2005)
Entry.objects.filter(pub_date__year__gte=2005)

month
#
Entry.objects.filter(pub_date__month=12)
Entry.objects.filter(pub_date__month__gte=6)

day
#
Entry.objects.filter(pub_date__day=3)
Entry.objects.filter(pub_date__day__gte=3)

week_day
#
Entry.objects.filter(pub_date__week_day=2)
Entry.objects.filter(pub_date__week_day__gte=2)

hour
#
Event.objects.filter(timestamp__hour=23)
Event.objects.filter(time__hour=5)
Event.objects.filter(timestamp__hour__gte=12)

minute
#
Event.objects.filter(timestamp__minute=29)
Event.objects.filter(time__minute=46)
Event.objects.filter(timestamp__minute__gte=29)

second
#
Event.objects.filter(timestamp__second=31)
Event.objects.filter(time__second=2)
Event.objects.filter(timestamp__second__gte=31)

高级操作

extra 
在QuerySet的基础上继续执行子语句 

extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 
select-select_params

例子:

tmp = models.Book.objects.all().extra(select={"n":"select count(1) from app05_book"})
for i in tmp:
    print(i.title, i.n)
书一 6
书二 6
书三(第) 6
书四(第) 6
书五(第) 6
书六(第) 6
1
2
3
4
5
6
7
8
9


select占位符

tmp = models.Book.objects.all().extra(select={"n":"select count(1) from app05_book WHERE id>%s"},select_params=[3,])
for i in tmp:
    print(i.title, i.n)
书一 3
书二 3
书三(第) 3
书四(第) 3
书五(第) 3
书六(第) 3
1
2
3
4
5
6
7
8
9


where-params

models.Book.objects.extra(where=["title=%s"],params=["书一"])
<QuerySet [<Book: 书一>]>
1
2
models.Book.objects.extra(where=["title='书一' or title='书二'"])
<QuerySet [<Book: 书一>, <Book: 书二>]>
1
2


and关系

models.Book.objects.extra(where=["title='书一'","id=2"])
<QuerySet []>
1
2
3


举个例子:

models.UserInfo.objects.extra(
                    select={'newid':'select count(1) from app01_usertype where id>%s'},
                    select_params=[1,],
                    where = ['age>%s'],
                    params=[18,],
                    order_by=['-age'],
                    tables=['app01_usertype']
                )
                """
                select 
                    app01_userinfo.id,
                    (select count(1) from app01_usertype where id>1) as newid
                from app01_userinfo,app01_usertype
                where 
                    app01_
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Vue是一种用于构建用户界面的JavaScript框架,它采用了组件化的开发方式,使得开发者可以将整个页面拆分成多个独立的组件进行开发与复用。Vue可以与后端开发框架进行无缝集成,实现前后端分离的开发模式。 Django是一个基于Python的高级Web开发框架,它提供了一系列的工具和功能,使得开发者可以快速地构建出功能完善且安全可靠的Web应用。Django有着非常丰富的内置功能,包括认证、授权、数据库访问等,同时也提供了强大的开发者工具和社区支持。 DRF全称为Django Rest Framework,是一个基于Django的RESTful风格的Web API开发框架。它提供了一系列的功能和工具,使得开发者可以快速地构建出符合RESTful规范的API接口。DRF的设计思想简洁灵活,并提供了许多常用的功能,比如序列化、认证、权限控制、视图集等。 结合起来,VueDjangoDRF可以构建出一个完整的前后端分离的Web应用。前端使用Vue进行用户界面的开发,可以利用Vue的组件化来提高开发效率和代码复用性。后端使用Django进行业务逻辑和数据处理,可以借助Django的丰富功能和开发者工具来提高开发效率和项目质量。DRF可以作为Django的扩展,提供符合RESTful规范的API接口,使得前后端之间可以进行数据的传递与交互。 总之,VueDjangoDRF组合可以实现前后端分离的开发模式,使得开发者可以分工协作,提高开发效率,同时还能构建出功能丰富、安全可靠的Web应用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值