Django学习五
一、Django分页功能
1.常见属性
from django.core.paginator import Paginator
def page_test(request):
# color=['red','orange','yellow','green','blue','purper']
# p = Paginator(color,2) #实例化出来的分页对象
# # print(p)
# # print(p.count)
# # print(p.num_pages) #页的页面数
# # print(p.per_page) #次数(几个为一页)
# # print(p.page_range)
# page1 = p.page(1)
# page2 = p.page(2)
# print(page1.object_list)
# print(page2.object_list)
# print(page2.paginator) #指向的是p对象
# print(page1.number) #当前为哪一页
# print(page1.has_next()) #判断是否有下一页
# print(page2.has_previous()) #判断是否有前一页
# print(page2.has_other_pages()) ##判断是否有前一页或者后一页
#
# print(page2.next_page_number())
# print(page2.previous_page_number())
#
# print(page1.start_index()) #这一页最开始的元素
# print(page1.end_index()) #这一页最后一个元素
# return HttpResponse('xxx')
2.跳转上一页或下一页
{% if page.has_previous %}
<a href="{% url 'search' %}?page={{ page.previous_page_number }}">上一页</a>
{% endif %}
{% if page.has_next %}
<a href="{% url 'search' %}?page={{ page.next_page_number }}">下一页</a>
{% endif %}
3.实现计页数
{{ page.number }}/{{ page.paginator.num_pages }} # 先转化为p对象-->页的页面数
二、查询
详解地址:https://blog.csdn.net/u013210620/article/details/79182038
1.聚合查询(aggregate)
aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。键的名称是聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。
from django.db.models import Count,Avg,Sum,Min,Max
def test_info(request):
rr = Book.objects.all().aggregate(Avg('price'),
Sum('price'),
Min('price'),
Max('price'),
Count('price'))
print(rr)
return HttpResponse('xxxx')
2.分组查询(annotate)
为调用的QuerySet中每一个对象都生成一个独立的统计值
3.F查询
比较同一个 model 实例中两个不同字段的值。
4.Q查询
filter() 等方法中的关键字参数查询都是一起进行“AND” 的
rr = Book.objects.filter(Q(publish='心灵工坊')|Q(publish='中华书局'))
三、实现页面跳转(5s之后)
<script>
function re(){
window.location="{% url 'login2' %}"
}
window.onload=function(){
window.setTimeout(re,5000)
}
</script>