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/
django分页功能,templatetags的应用的更多相关文章
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- Django——分页功能Paginator
Django分页功能----Paginator Paginator所需参数: Paginator(object_list,per_page) Paginator常用属性: per_page: 每页显示 ...
- 2 django系列之django分页与templatetags
preface 当页面出现的条目多的时候,我们就需要使用分页功能了.Django作为一个知名的web框架,自然也提供了分页功能,下面说说它. Python-shell 练练手 在python下入手 先 ...
- django分页功能实现
django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...
- [oldboy-django][2深入django]分页功能
1 django自带分页 1.1 分页模板 <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- django分页功能
采用django自带的Paginator功能 from django.core.paginator import Paginator food = foodInfo.objects.filter(fo ...
- Django自定制分页功能
URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法
python_way day18 html-day4 1.Django-路由系统 - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...
随机推荐
- P1294 高手去散步 洛谷
https://www.luogu.org/problem/show?pid=1294#sub 题目背景 高手最近谈恋爱了.不过是单相思.“即使是单相思,也是完整的爱情”,高手从未放弃对它的追求.今天 ...
- Android之QQ授权登录获取用户信息
有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...
- shell EOF注意点
当sqlplus与shell交互的时候我们这么用 su - oracle -c "sqlplus / as sysdba<<EOF select * from gv($insta ...
- 用户向导左右滑动页面实现之ViewPager
接着上一篇博客.上一篇博客是用ImageSwitcher实现用户向导功能,如今用ViewPager实现同样的功能. 直接看代码: 布局文件activity_main.xml <RelativeL ...
- java面向接口编程
在oop中有一种设计原则是面向接口编程,面向接口编程有非常多优点,详细百度一大片.我来谈一下详细的使用中的一些不成熟的见解.! 首先面向接口编程能够消除类之间的依赖关系,使得业务仅仅依赖接口. 这样有 ...
- HashMap源代码剖析
大部分思路都是一样的 .仅仅是一些细节不一样.源代码中都标了出来.jdk容器源代码还是挺简单的. public class HashMap<K,V> extends AbstractMap ...
- Android 线程 Looper.prepare()、Looper.loop() 使用
优化项目过程中发现了一个非常Low的问题,整理一下.备忘: 说问题之前先看下HandlerThread的定义 一个封装了looper的线程: Looper用于封装了android线程中的消息循环. ...
- 线段树 hdu3255 Farming
做了这么多扫描线的题,,基本都是一个思路. 改来改去,,无非就是维护的节点的内容以及push_up越写越复杂了而已 首先将价格排序处理一下编号,变成编号越大的powerfol越大 然后后面加入扫描线的 ...
- android SearchView 样式修改
try { Class<?> argClass=mSearchView.getClass(); //指定某个私有属性 Field mSearchHintIconField = argCla ...
- B1045 糖果传递 数学
糖果传递,一开始就想到了n^2的模拟贪心算法,但是一看,数据范围太大,好像只有O(N)能过...没啥方法,只好看题解,之后发现,woc,还有这种操作? 这个题直接可以用数学证明... 证明如下: 首先 ...