Django的配置文件时settings.py中的
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')], 只修改这一个'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]对数据库进行增 删 改 查
在当前的文档的views.py中的
class RegisterView(View):def get(self, request):1 增加book = BookInfo(btitle='天涯明月刀',bpub_date=date(1999, 12, 12),bread=30,bcomment=10)book.save()HeroInfo.objects.create(hname='叶开',hgender=0,hcomment='小李飞刀',hbook=book)2 查询try:基本查询查询所有的书名books = BookInfo.objects.all()print(books)book = BookInfo.objects.get(id=1)book = BookInfo.objects.get(pk=1)book = BookInfo.objects.get(id=100)print(book)print(BookInfo.objects.count())过滤查询相等print(BookInfo.objects.filter(id__exact=1))print(BookInfo.objects.filter(id=1))模糊查询print(BookInfo.objects.filter(btitle__contains='刀'))print(BookInfo.objects.filter(btitle__endswith='刀'))print(BookInfo.objects.filter(btitle__startswith='天'))以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.空查询print(BookInfo.objects.filter(btitle__isnull=False))print(HeroInfo.objects.filter(hcomment__isnull=False))范围查询print(BookInfo.objects.filter(id__in=[1, 3, 5]))print(HeroInfo.objects.filter(id__in=[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]))比较查询print(BookInfo.objects.filter(id__gt=3))print(BookInfo.objects.exclude(id__gt=3))日期查询print(BookInfo.objects.filter(bpub_date__year=1980))print(BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1)))F 对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。查询阅读量大于等于评论量的图书。print(BookInfo.objects.filter(bread__gte=F('bcomment')))查询阅读量大于等于评论量2倍的图书。print(BookInfo.objects.filter(bread__gte=F('bcomment')*2))Q 对象多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。print(BookInfo.objects.filter(bread__gt=20,id__lt=3))print(BookInfo.objects.filter(bread__gt=20).filter(id__lt=3))如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符,Q对象被义在django.db.models中。查询阅读量大于20的图书,改写为Q对象如下。print(BookInfo.objects.filter(Q(bread__gt=20)))Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现print(BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3)))Q对象前可以使用~操作符,表示非not 查询编号不等于3的图书。print(BookInfo.objects.filter(~Q(pk=3)))聚合函数使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg 平均,Count 数量,Max 最大,Min 最小,Sum 求和,被定义在django.db.models中。查询图书的总阅读量。print(BookInfo.objects.aggregate(Sum('bread')))排序使用order_by对结果进行排序print(BookInfo.objects.all().order_by('bread')) # 升序print(BookInfo.objects.all().order_by('-bread')) # 降序关联查询由一到多的访问语法:一对应的模型类对象.多对应的模型类名小写_set 例:print(BookInfo.objects.get(id=1).heroinfo_set.all())由多到一的访问语法:多对应的模型类对象.多对应的模型类中的关系类属性名 例:print(HeroInfo.objects.get(id=1).hbook)访问一对应的模型类关联对象的id语法:多对应的模型类对象.关联类属性_idprint(HeroInfo.objects.get(id=1).hbook_id)关联过滤查询由多模型类条件查询一模型类数据:查询图书,要求图书英雄为"孙悟空"print(BookInfo.objects.filter(heroinfo__hname='孙悟空'))查询图书,要求图书中英雄的描述包含"八"print(BookInfo.objects.filter(heroinfo__hcomment__contains='八'))由一模型类条件查询多模型类数据:查询书名为“天龙八部”的所有英雄。print(HeroInfo.objects.filter(hbook__btitle='天龙八部'))查询图书阅读量大于30的所有英雄print(HeroInfo.objects.filter(hbook__bread__gt=30))3 修改(修改更新有两种方法)save 修改模型类对象的属性,然后执行save()方法hero = HeroInfo.objects.get(hname='猪悟能')hero.hname='猪八戒'hero.save()hero = HeroInfo.objects.get(hname='孙悟空')hero.hname = '孙行者'hero.hcomment = '七十二变'hero.save()update 使用模型类.objects.filter().update(),会返回受影响的行数HeroInfo.objects.filter(hname='沙悟净').update(hname='沙和尚')4 删除(删除有两种方法)1)模型类对象deleteHeroInfo.objects.get(id=13).delete()2)模型类.objects.filter().delete()HeroInfo.objects.filter(id=14).delete()查询集 QuerySet 查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):all():返回所有数据。filter():返回满足条件的数据。exclude():返回满足条件之外的数据。order_by():对结果进行排序。对查询集可以再次调用过滤器进行过滤,如print(BookInfo.objects.filter(bread__gt=30).order_by('bpub_date'))测试自定义的管理器print(BookInfo.books.all())book = BookInfo.books.create_book('aabc', date(1988, 1, 1))except Exception as e:print("出错了")response = HttpResponse("register get page")return responsedef post(self, request):response = HttpResponse("register post page")return response
详细解决方案
django中对数据库的增删改查
热度:37 发布时间:2024-02-26 11:51:51.0
相关解决方案
- django 小学识
- django[模板标签]django模板变量直接显示html代码的有关问题
- django manage admin css和javascript失效有关问题
- 1 Django 1.5.4 入门
- Django 1.5.4 课题25 Notifications
- Django 1.5.4 课题23 Celery RabbitMQ
- Django 1.5.4 课题六 login 和 logout
- Django 1.5.4 课题八 Model
- Django 1.5.4 课题二 urls 和 view 提高
- 《django web开发指南》在v1.2.4版本下的出入
- 初记 django 1.4的变化
- django 展示admin登录么有权限
- django template: 输出js数组加逗号的有关问题
- Django(settings.py配备)
- Django + jquery + json 范例实现 在此记录
- django 模板诠释
- Django Admin Site (v1.4) 的Nginx配备
- Django-1.3的helloworld4 写sql话语
- Django,将JavaScript插入模板的语法
- 在 Django 中将 openpyxl 工作簿对象作为 HttpResponse 返回。 是否可以?
- Django Deploy上的内部服务器错误
- django-jenkins-AttributeError:“ Coverage”对象没有属性“ _harvest_data”
- Django:获取数据库错误中最新插入的SPECIFIC字段值:需要多个值才能解压
- Django-根据查询更新或插入
- Django ajax 403因为httponly cookie
- Django:如何将分隔的整数字段(年,月)连接为日期范围以过滤数据库
- django rest 框架中补丁方法的验证
- 安装问题 - Django for python
- django queryset orm-从同一表中获取特定格式的数据
- Django-检查对象是否存在,如果存在则引发错误