from django.shortcuts import render
from django.http import HttpResponse,HttpRequest
# Create your views here.
from book.models import BookInfo,PeopleInfo

def index(request):

##ORM
##1 查询
books=BookInfo.objects.all()
##2 组织数据
context={
'books':books
}
##3 传递参数
return render(request,'index.html',context)
return HttpResponse('--------index')

"""
类似于ipython的东西
python manage.py shell
在Terminal中
from book.models import BookInfo,PeopleInfo
BookInfo.objects.all()
"""

#########################新增数据#############################
################ 方式一 ##############
##会把新生承担额对象返回给我们
book=BookInfo(
name='python',
pub_date='2000-01-01'
)
####需要调用save方法
book.save()

################ 方式二 ##############
#直接入库
##objects是模型管理类,
###会返回新生对象
BookInfo.objects.create(
name='java',
pub_date='2010-1-1'
)

#############################更新数据#################################
##### 方式一 #############################
##1 先查询数据
##select * from bookinfo where id=1
book1=BookInfo.objects.get(id=1)
##2 修改数据
book1.readcount=20
##3 调用save入库
book1.save()

####### 方式二 #####################
#filter 过滤
BookInfo.objects.filter(id=1).update(
readcount=100,
commentcount=200
)


########################## 删除数据 ###########################################

####方式一####
# 1 查询出数据
book2=BookInfo.objects.get(id=4)
#2 调用delete
book2.delete()

###方式二 #######
BookInfo.objects.filter(id=6).delete()

######################## 查询 #####################################
### 基本查询 ############
#get 得到某一个数据
#all 获取所有
#count 个数

##get返回一个对象,查询不存在,会抛出异常
book3=BookInfo.objects.get(id=1)
try:
book4=BookInfo.objects.get(id=100)
except BookInfo.DoesNotExist:
pass
##all,返回的是一个列表---》<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: python>]>
###get得到的是单一对象
BookInfo.objects.all()
###count
BookInfo.objects.all().count()
BookInfo.objects.count()

##################### filter,get,exclude ##############################
#####相当于where查询########""""""
"""
filter :筛选、过滤 返回n个结果
get :返回一个结果
exclude :排除掉符合条件剩下的,相当于not
语法形式:
以filter(字段名_运算符=值)
"""
#查询编号为1的图书
#exact 精确地、准确的
###get返回的是对象,filter返回的是列表
BookInfo.objects.get(id__exact=1)
BookInfo.objects.get(id=1)
BookInfo.objects.filter(id=1)
BookInfo.objects.filter(id=1)[0]

#查询书名包含‘湖’的图书
#contains 包含的意思
BookInfo.objects.filter(name__contains='天')
#查询书名以‘部’结尾
BookInfo.objects.filter(name__endswith='部')
#查询书名为空的图书
BookInfo.objects.filter(name__isnull=True)
#查询编号为1或3或5的图书
BookInfo.objects.filter(id__in=[1,3,5])
#编号大于等于2的图书
#gt 是大于 gte是大于等于
#lt 小于 lte小于等于
BookInfo.objects.filter(id__gte=2)
#查询书籍id不为3的图书
BookInfo.objects.exclude(id=3)
#查询1980年发布的图书
BookInfo.objects.filter(pub_date__year='1980')
#查询1990年1月1日后发表的图书
BookInfo.objects.filter(pub_date__gt='1920-1-1')