做推广的网站,小型网站设计及建设,东明网页设计,没备案的网站可以做淘客批量插入数据
【1】准备数据
class Book(models.Model):title models.CharField(max_length32)
【2】一条一条插入
后端
def ab_many(request):# (1)先给Book表插入一万条数据for i in range(1000):models.Book.objects.create(titlef第{i}本书)# (2)将所有数据查询到并展…批量插入数据
【1】准备数据
class Book(models.Model):title models.CharField(max_length32)
【2】一条一条插入
后端
def ab_many(request):# (1)先给Book表插入一万条数据for i in range(1000):models.Book.objects.create(titlef第{i}本书)# (2)将所有数据查询到并展示给前端页面book_queryset models.Book.objects.all()return render(request, ab_many.html, locals())
前端
{% for book_obj in book_queryset %}p{{ book_obj.title }}/p
{% endfor %} 效果就是有一种网络很高的感觉页面一直在转圈圈 【3】优化-批量插入
def ab_many(request):# 批量插入boo_list []for i in range(1000):book_obj models.Book.objects.create(titlef第{i}本书)boo_list.append(book_obj)models.Book.objects.bulk_create(boo_list)return render(request, ab_many.html, locals())
当我们想向数据库批量插入数据的时候使用ORM提供的bulk_create方法能够大大的减少操作的时间
分页的原理及推导
当查询的数据太多的时候一页展示不完分页码展示
总数据 每页展示 总页数
100 10 10
101 10 11
99 10 10
怎么计算出来总页数
总数据 / 每页展示 总页数有余数1
没有余数商divmod
分页类
class Pagination(object):def __init__(self, current_page, all_count, per_page_num2, pager_count11):封装分页相关数据:param current_page: 当前页:param all_count: 数据库中的数据总条数:param per_page_num: 每页显示的数据条数:param pager_count: 最多显示的页码个数try:current_page int(current_page)except Exception as e:current_page 1if current_page 1:current_page 1self.current_page current_pageself.all_count all_countself.per_page_num per_page_num# 总页码all_pager, tmp divmod(all_count, per_page_num)if tmp:all_pager 1self.all_pager all_pagerself.pager_count pager_countself.pager_count_half int((pager_count - 1) / 2)propertydef start(self):return (self.current_page - 1) * self.per_page_numpropertydef end(self):return self.current_page * self.per_page_numpropertydef page_html(self):# 如果总页码 11个if self.all_pager self.pager_count:pager_start 1pager_end self.all_pager 1# 总页码 11else:# 当前页如果页面上最多显示11/2个页码if self.current_page self.pager_count_half:pager_start 1pager_end self.pager_count 1# 当前页大于5else:# 页码翻到最后if (self.current_page self.pager_count_half) self.all_pager:pager_end self.all_pager 1pager_start self.all_pager - self.pager_count 1else:pager_start self.current_page - self.pager_count_halfpager_end self.current_page self.pager_count_half 1page_html_list []# 添加前面的nav和ul标签page_html_list.append(nav aria-labelPage navigationul classpagination)first_page lia href?page%s首页/a/li % (1)page_html_list.append(first_page)if self.current_page 1:prev_page li classdisableda href#上一页/a/lielse:prev_page lia href?page%s上一页/a/li % (self.current_page - 1,)page_html_list.append(prev_page)for i in range(pager_start, pager_end):if i self.current_page:temp li classactivea href?page%s%s/a/li % (i, i,)else:temp lia href?page%s%s/a/li % (i, i,)page_html_list.append(temp)if self.current_page self.all_pager:next_page li classdisableda href#下一页/a/lielse:next_page lia href?page%s下一页/a/li % (self.current_page 1,)page_html_list.append(next_page)last_page lia href?page%s尾页/a/li % (self.all_pager,)page_html_list.append(last_page)# 尾部添加标签page_html_list.append(/nav/ul)return .join(page_html_list)