目录
3.当需要展示的数据量特别多的情况下,会采取什么优化措施,你能否简要描述一下该措施的实施思路,以及该措施具体应用下的操作步骤
4.简述面相对象的三大特性及特点,其中你认为哪个特性使用频率最高,为什么
5.什么是反射,请写出反射对应的四个方法,列举出类中可以使用的装饰器及作用,再列举出类中双下开头双下结尾的方法及自动触发的应用场景
序列化就是将其他类型的数据格式化成json格式{键值对格式}. 目前接触到的序列化类型有JSON, PICKLE, JSONSERIZLIZER.
批量数据创建>>>:bulk_create()
批量数据修改>>>:bulk_update()
当需要展示的数量特别多的时候, 需要使用分页器进行数据的批量展示以减轻服务器压力, 避免宕机.
首先django会有一个机制, 来限制展示的数据量, 默认为21条.
若是自定义的分页器, 则需要知道总数据量的条数, 利用divmode内置函数进行分页>>> 比如每次展示十页,每页展示十条数据.多余的几条多开一页展示. 由于前端模板语法不支持range方法, 但是后端支持, 我们可以在后端创建好html标签, 然后传递给html页面使用.
django也自带有分页器组件,
- from app01.plugins import mypage
- book_query = models.Book.objects.all()
- page_obj = mypage.Pagination(current_page=request.GET.get('page'),
- all_count=book_query.count()
- )
- page_query = book_query[page_obj.start:page_obj.end]
- return render(request, 'bookList.html', locals())
-
- {% for book_obj in page_query %}
- <p class="text-center">{{ book_obj.title }}p>
- {% endfor %}
- {{ page_obj.page_html|safe }}
三大特征: 继承, 封装, 多态. 其中继承的使用频率最高..
优点: 1. 减少代码的编写
2. 可以使用super()方法使得子类重写父类, 提升了子类的扩展性
反射的本质就是通过字符串来操作对象的数据或方法.
其有四个重要的内置函数 getattr, hasattr, setattr, delattr 都是基于字符串实现反射机制的,
hasattr():判断对象是否含有某个字符串对应的属性
getattr():获取对象字符串对应的属性
setattr():根据字符串给对象设置属性
delattr():根据字符串给对象删除属性
1.__str__
对象被执行打印(print、前端展示)操作的时候自动触发
该方法必须返回字符串类型的数据
很多时候用来更加精准的描述对象
2.__del__
对象被执行(被动、主动)删除操作之后自动执行
3.__getattr__
对象查找不存在名字的时候自动触发
4.__setattr__
对象在执行添加属性操作的时候自动触发 >>> obj.变量名=变量值
5.__call__
对象被加括号调用的时候自动触发
6.__enter__
对象被执行with上下文管理语法开始自动触发
该方法返回什么as后面的变量名就会得到什么
7.__exit__
对象被执行with上下文管理语法结束之后自动触发
8.__getattribute__
只要对象查找名字无论名字是否存在都会执行该方法
如果类中有__getattribute__方法 那么就不会去执行__getattr__方法
9.__new__
产生空对象 类是先通过__new__去调用,再通过__init__执行.