s17day18django的查询.ajax和分页

ORM操作:

<1> 添加记录方法

    # create方式
    #Book.objects.create(title="python",price=233)
    # save 方式
    book_obj=Book(title="Linux",price=122)
    book_obj.save()
	
	
	一对多添加方式:
	
	     Book.objects.create(title="python",price=223,publisher_id=2)
         book_obj=Book(title="Linux",price=122,publisher=publish_obj)
    多对多的添加方式:
        ManyToManyField:
			 # 绑定关系
			 book_obj.authors.add(*author_list) # book_obj.authors:  nid=2 的书籍关联的作者的对象集合
			 # 解除关系
			 book_obj.authors.clear()
			 book_obj.authors.remove()
	    手动创建第三张表:
		    Book2Author.objects.create(book_id=1,author_id=1)


<2> 查询
    单表查询
		表.objects.all()         ----- QuerySet的集合对象  [obj1,obj2]   obj:就是当前操作表的一条记录
		表.objects.filter()      ----- QuerySet的集合对象  [obj1,obj2]
		表.objects.get()         ----- model对象 : obj  当前操作表的一条记录
		
		QuerySet.first()         ----- model对象    eg:  表.objects.all().first()
		QuerySet.last()          ----- model对象     
		
		表.objects.values("title","price")
		
		万能的__:
		   
		表.objects.filter(字段__keyword)
		  
				models.Tb1.objects.filter(id__lt=10,id__gt=1)   # 获取id大于1 且 小于10的值
				models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
				models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
				models.Tb1.objects.filter(name__contains="ven")
				models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
				models.Tb1.objects.filter(id__range=[1, 2])   # 范围bettwen and
				#startswith,istartswith, endswith, iendswith
		

    关联查询(多表查询)
	   sql:
			子查询 
			select name from dep whrere id=
			(select dep_id from emp whrere name="张三")
			联表查询
			select dep.name from emp inner join dep on emp_dep_id=dep.id where emp.name="张三"
	
	
	    两个手段: 1 对象  2  __

            1 对象
			        # 查询python这本书的出版社的联系方式  (一对多)
					#ret=book_obj.publisher.email
					#print(ret)

					# 查询Linux的所有作者的名字
					book_obj = Book.objects.get(title="Linux")

					author_list=book_obj.authors.all()
					for author in author_list:
						print(author.name)
			
			2  __     (******)    重点:filter方法与value方法都可以进行跨表查询
			
			
			    #  查询alex出版过的所有书籍名称
				# 方式1  正向查询
				# ret=Book.objects.filter(authors__name="alex").values("title")
		
				# 方式2  反向查询
				# ret=Author.objects.filter(name="alex").values("book__title")
				# print(ret) # <QuerySet [{'book__title': '金瓶梅'}]>
				
				# 查询出版了python这本书的出版社的名字
				# 正向:
				ret1=Book.objects.filter(title="python").values("publisher__name")
				# 反向:
				ret2=Publish.objects.filter(book__title="python").values("name")
			
    聚合与分组查询

            sql: 

                聚合函数 max min count avg sum	
                select * from emp group by 字段


            聚合:ret=Book.objects.all().aggregate(PriceAvg=Avg("price"),maxPrice=Max("price"))
			分组:ret=Book.objects.filter(authors__name="oldboy").aggregate(Sum("price"))
			
	F查询与Q查询
	
	        from django.db.models import F,Q
			#Book.objects.update(price=F("price")+100)
			# Q 查询  逻辑与&     逻辑或 |    逻辑非  ~
			ret=Book.objects.filter(
				Q(title__startswith="p")|Q(title__startswith="L")
			)
	
<3> 修改
    QuerySet.update()

    eg:  Book.objects.filter(id__gt=10).update()	
    eg:  Book.objects.get(id=5).update()	 # models对象不能调用update方法

<4> QuerySet.delete()	
    

Ajax(重点)


    什么是Json?
	是一种轻量级的数据交换格式
	
	json字符串  : 符合json规范的字符串
	
	json对象    : JS对象的子集
	
用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。	


ajax优点:1 异步交互 2 局部刷新

实现ajax:
          1  jquery(兼容了大多数浏览器)
		      
			  形式1:
		      $.ajax(settings)
		      形式2:
			  $.ajax(url,[settings])
			  
			  
				  $.ajax({
					  url:"/path/"
					  type:"POST",
					  data:{"":""}
					  success:function(data){
						 alert(data)  // server返回的数据
						}
				  })
		  
		  2  JS

         
分页器(page)

COOKIE & SESSION



本页面三个demo分别为Orm_query   ajax_demo  page_demo



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值