django分页功能,templatetags的应用

django 将不会将得到的html代码自动转化

from django.utils.html import format_html

html =‘‘‘ <a href=‘http://www.china.cn‘>中国</a>‘‘‘

format_html(html)  

django分页

分页功能基本操作

from django.core.import Paginator

li=[11,12,13,22,24,25]
p=Paginator(li,3)  #将li传入,每页显示3条
p.count  6 共有多少个元素
p.num_pages 2 共有多少页
p.page_range (1,3) 页码范围
p1=p.page(1)  取第一页
p2=p.page(2)  取第二页
p1.object_list [11,12,13]  页码的元素列表
p1.number  1 查询自己是多少页
p1.has_next()  True  是否有下一页
p1.has_previous() False 是否有上一页
p1.has_other_pages() True 是否有其他页
p1.next_page_number() 2  下一页的页码
p1.previous_page_number() 上一页的页码

后端代码 views.py

from django.shortcuts import render
from django.core.paginator import Paginator,EmptyPage, PageNotAnInteger
from app import models

def index(request):
    article_obj = models.Aticle.objects.all()
    paginator = Paginator(article_obj,5)
    page = request.GET.get(‘page‘)#取到url的page值 www.xxx.com/?page=xxx
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        #如果不是page不是数字
        contacts = paginator.page(1)
    except EmptyPage:
        #如果page不存在 即超出范围
        contacts = paginator.page(paginator.num_pages)
    return render(request,‘duanzi/index.html‘,{‘contacts‘: contacts,})

前端代码

{% load tags %}
<!DOCTYPE html>
<html>
    <head> <title>django web</title>
    </head>
    <div class=‘content‘>
{% for article in contacts %}
<a href="{% url "article" article.id %}" target="_blank">{{ article.title }}</a>
{%endfor%}
    </div>
    <div class="page">
    <a href="{% url ‘index‘ %}">首页</a>
    {% if contacts.has_previous %}
    <a href="?page={{ contacts.previous_page_number }}">上页</a>
    {% endif %}
    {% for pagenum in contacts.paginator.page_range %}
        {% www ‘pagenum contacts.number‘ as Y %}
        {% if Y %}

            {% if pagenum == contacts.number %}
                <span class="current">{{ pagenum }}</span>
                {% else %}
                <a href="?page={{ pagenum }}">{{ pagenum }}</a>
            {% endif %}
        {% endif %}
    {% endfor %}
    {% if contacts.has_next %}
    <a href="?page={{ contacts.next_page_number }}">下页</a>
    {% endif %}
    <a href="?page={{ contacts.paginator.num_pages }}">尾页</a>
</div>

前端代码

在app在新建templatetags模块文件夹,再新建一个tags.py文件

tags.py文件代码

from django import template

register = template.Library()

@register.simple_tag
def www(pagenum,num):
    if -4<=pagenum-num<=4:
        return True
    else:
        return False

templetatag 主要用到两个类

@register.filter  作为过滤方法使用 只能添加一个参数 

模板中的应用方法为{% args | 函数名 %}

@register.simple_tag  可以添加两个参数

模板中的应用方法为{% 函数名 参数1 参数2 }

扩展方法: as方法
 {% 函数名 参数1 参数2 as y }  赋值为x 同python as方法一样

使用时在html文件 使用load方法{% load tags %}  tags:文件名

官方手册

https://docs.djangoproject.com/en/1.9/topics/pagination/

https://docs.djangoproject.com/es/1.9/howto/custom-template-tags/

时间: 2024-10-17 15:14:54

django分页功能,templatetags的应用的相关文章

{oldboy-django][2深入django]分页功能

1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/boots

django分页功能

采用django自带的Paginator功能 from django.core.paginator import Paginator food = foodInfo.objects.filter(food_name__contains=searchstr) pag = Paginator(food, 25) #每页显示25条记录 page = 2  #请求的页码 try: contacts = paginator.page(page) except PageNotAnInteger: # 请求的

Django自定制分页功能

URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import vi

django 分页组件

一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [     url(r'^admin/', admin.site.urls),     url(r'^index.html$', views.index),     ] views.py 1 2 3 4

django高级应用(分页功能)

django高级应用(分页功能) 1.原生分页应用 前端html代码 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <ul> 9 {% for item in posts.obj

django中orm分页功能(内置分页)

分批获取数据的方法 数据库方法 models.Uinfo.objects.all()[10:20] django自带的方法 创建一个新的url urlpatterns = [ url(r'^index.html/', views.index), ] 创建index函数 def index(request): """ 分页功能 :param request: :return: """ user_list = models.Uinfo.objects

django实现分页功能

在个人博客或者网站上,我们发表文章经常会对博客进行分页,下面代码用django实现: django有它自带的分页功能:Paginator 不过我们用在它基础上开发的另一个包:django-pure-pagination 先了解一下这个包特性: 1.使用与django.core相同的API,因此与现有代码完全兼容. 2.它考虑了现有的GET参数,具有动态查询字符串创建. 3.用html呈现分页功能,开箱即用(方便) 4.使呈现更高级的分页模板更加容易. 使用: 一.安装 在虚拟环境中通过pip安装

python2.0_day19_前端分页功能的实现

我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我们实现了,那么前端每一次请求就需要给后台提供参数了.这个参数就是告诉views里的视图函数我取第几页.需求分析: 95条,每页20条 第一次请求 返回20条,并且后端返回当前返回是第几页 ,所以第一次返回是1 点击下一页 1+1=2 ,把2传给后端,后端拿到后在把第二页的内容返回给前端,并且把当前返

django分页技术django-pagination和Paginator

转载前还请注明出处:http://blog.csdn.net/gugugujiawei 一.概述 几乎所有的web应用,都需要分页功能,但分页技术总体来说分两种,一种是全部加载,存于浏览器的缓存中,一种是分页访问,部分加载.前一种方法优点是实现简单,在一些对项目要求不多的特定应用上用得较多,可以利用的插件譬如datatables,而后一种方法优点是不会占用服务器太多的缓存,对于数据量大的列表项必须用到这种技术.由于我现在的项目属于管理后台,管理来自成千上万用户的数据,因而只能用到第二种方法.初期