再次进阶django(回顾多对多表的创建方式,contentType参数,ajax,批量插入,利用importlib实现包的导入)

0.回顾django一些内容

1.MTV和MVC

MTV:模型层,模板层,视图层

MVC:模型层,视图层,控制层

2.多对多关系的三种创建方式

第一种(全自动):author = models.ManyToManyField(to='Author')

第二种(纯手动):

class Book(models.Model):
    name = models.CharField(max_length=32)
class Author(models.Model):
    name = models.CharField(max_length=32)
class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author)

第三种(半自动)(不仅可以查询表关系,而且可以拓展第三张表的字段):

class Book(models.Model):
    name = models.CharField(max_length=32)
    athor = models.ManyToManyField(to='Author', through='Book2Author', through_field='book', 'author')
class Author(models.Model):
    name = models.CharField(max_length=32)
    book = models.ManyToManyField(to='Author', through='Book2Author', through_field='author', 'book')
class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author)

3.contentType参数(前后端传输数据的编码格式)

1.urlencoded(form表单与ajax默认的数据提交编码格式)

数据格式:name='jason'&password='123'

django后端识别到urlencoded数据格式将其封装到request.POST

2.formdata  传输文件

支持传普通键值对也可以传文件。

普通键值的处理放到request.POST中

文件数据处理放到request.FILES中

3.application/json(ajax支持)

JSON.stringify({'name':'jason'})

django后端对于json格式的数据不做任何处理,对原生的二进制数据存到request.body中,手动处理。

先解码再反序列化

3.ajax

特点:异步刷新,局部刷新

四个基本参数:

url: "" # 控制数据提交的地址,不写默认往当前位置提交
type: "get"  # 控制的是数据的提交方式get, post
data: {"name":"jason"}  # 提交的数据
success:function(data){
    # 局部刷新的操作
    alert(data)
}

# 绑定事件:
$('#b1').click(function(){
	$.ajax({
	url:'',  # 控制数据提交的地址,不写默认往当前位置提交
	type:'get',  # 控制的是数据的提交方式 get,post,。。。
	contentType:'application/json',
	data:JSON.stringify({'name':'jason'}),  # 提交的数据
	success:function(data){
	# 做局部刷新的操作
	alert(data)
			}
		})
	})

ajax发送文件:

1.利用一个js内置对象FormData

2.这个FormData既可以传普通的键值也可以传文件

3.需要修改两个默认参数processData,contentType

4.获取input框存储的文件数据

$('input[type="file"]')[0].files[0]

示例:

$('#b1').click(function(){
			# 先生成一个内置对象
			var formdata = new FormData();
			formdata.append('键','值');
			formdata.append('myfile',$('input[type="file"]')[0].files[0]);
			$.ajax({
				url:'',  # 控制数据提交的地址,不写默认往当前位置提交
				type:'get',  # 控制的是数据的提交方式 get,post,。。。
				contentType:false,
				processData:false,
				data:JSON.stringify({'name':'jason'}),  # 提交的数据
				success:function(data){
					# 做局部刷新的操作
					alert(data)
				}
			})
		
		
		})

4.批量插入(bulk_create())

l = []
for i in range(100000000):
    l.append(user_obj)

g = (models.User(name='%s'%i) for i in range(100000000))

自定义分页器:

后端
    book_list = models.Book.objects.all()
    page_obj = 自定义类    (current_page=request.GET.get('page',1),all_count=book_list.count())
    book_queryset = book_list[page_obj.start:page_obj.end]
前端
	将book_list全部替换为book_queryset
	渲染分页器样式
	{{ page_obj.page_html|safe }}

5.利用importlib实现包的导入

import importlib
s = 'xxx.b'
res = importlib.import_module(s)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值