CRM-展示列表,分页功能
目录
- 一.admin (创建超级用户)
- 二.展示列表
- 三.分页(封装成类)
一.admin (创建超级用户)
1.注册:

1.创建一个超级管理员,使用如下命令: python manage.py createsuperuser 2.输入打算使用的登录名: username:michaelshu 3.输入email: Email address: 4.输入密码,需要输入两次,输入过程中密码不显示: Password: (既要有数字又要有字母) Password (again): 当两次密码都相同的时候,就会提示superuser创建成功。 Superuser created successfully

2.修改密码
①第一种
python manage.py changepassword 用户名

②第二种 登录后修改

3.在 admin 中注册 用到的表

4.补充:
①中英文修改,在settings.py文件中修改 LANGUAGE_CODE
中文: LANGUAGE_CODE = 'zh-hans'
英文: LANGUAGE_CODE = 'en-us'
5.显示和直接编辑


二.展示列表
1.普通字段
对象.字段名
2. choices
对象.字段名 -->真实值
对象.get_字段名_display -->中文显示值
3.外键
①对象.外键 (定义str)
② 对象.外键.name
4.其他
定义函数
def show_class(self):
return '|' . join([str(i) for i in self.class_list.all()])
5.示例:

{% for customer in all_customer %}
<tr>
<td>{{ forloop.counter }}</td> #序号,根据循环次数
<td>{{ customer.qq }}</td> #普通字段
<td>{{ customer.name|default:'未填写' }}</td>
<td>{{ customer.get_sex_display }}</td> #choices 字段
<td>{{ customer.birthday|default:'未填写' }}</td><td>{{ customer.get_source_display }}</td>
<td>{{ customer.course }}</td>
<td>
{{ customer.show_status }}
</td>
<td>{{ customer.last_consult_date }}</td>
<td>{{ customer.consultant }}</td> #外键字段<td>{{ customer.show_class }}</td> #自定义函数
</tr>
{% endfor %}

6.日期格式化的配置
在settings.py 文件中进行配置
USE_L10N = False DATE_FORMAT = 'Y-m-d' DATETIME_FORMAT = 'Y-m-d H:i:s'
7.后端 直接发送 .html 代码(用safe)
①后端safe

from django.utils.safestring import mark_safe
def show_status(self): status_color = { 'signed':'green', 'unregistered':'#208c72', 'studying':'yellow', 'paid_in_full':'blue', } return mark_safe('<span style="color: white;padding: 2px">{}</span>'.format(status_color.get(self.status),self.get_status_display()))

②前端safe
{{ value|safe}}
三.分页(封装成类)
①新建放置插件的文件

②在 pagination.py 文件中的分页插件代码

class Pagination:
def __init__(self, page_num, all_count, per_num=10, max_show=11):
# 获取页码
try:
self.page_num = int(page_num)
if self.page_num <= 0:
self.page_num = 1
except Exception as e:
self.page_num = 1
# 每页显示的数据量
self.per_num = per_num
# 总数据量
all_count = all_count
# 总页码数
self.page_count, more = divmod(all_count, per_num)
if more:
self.page_count += 1
# 最大显示页码数
self.max_show = max_show
self.half_show = max_show // 2
@property
def page_html(self):
# 总页码数 < 最大显示页码数
if self.page_count < self.max_show:
page_start = 1
page_end = self.page_count
else:
# 处理左边极值
if self.page_num <= self.half_show:
page_start = 1
page_end = self.max_show
elif self.page_num + self.half_show >= self.page_count:
page_start = self.page_count - self.max_show + 1
page_end = self.page_count
else:
page_start = self.page_num - self.half_show # 2
page_end = self.page_num + self.half_show # 7 + 5 12
page_list = []
if self.page_num == 1:
page_list.append('<li class="disabled"><a>上一页</a></li>')
else:
page_list.append('<li><a href="?page={}">上一页</a></li>'.format(self.page_num - 1, ))
for i in range(page_start, page_end + 1):
if i == self.page_num:
page_list.append('<li class="active"><a href="?page={}">{}</a></li>'.format(i, i))
else:
page_list.append('<li><a href="?page={}">{}</a></li>'.format(i, i))
if self.page_num == self.page_count:
page_list.append('<li class="disabled"><a>下一页</a></li>')
else:
page_list.append('<li><a href="?page={}">下一页</a></li>'.format(self.page_num + 1, ))
return ''.join(page_list)
@property
def start(self):
"""
切片的起始值
:return:
"""
return (self.page_num - 1) * self.per_num
@property
def end(self):
"""
切片的终止值
:return:
"""
return self.page_num * self.per_num

③在 view.py 文件中调用分页插件

from utils.pagination import Pagination
from django.shortcuts import render, redirect, reverse, HttpResponsefrom crm import models
# 分页def user_list(request): """ 一页显示20
第1页 0 20 第2页 20 40
n (n-1)*20 20*n
:param request: :return: """ page = Pagination(request.GET.get('page', '1'), len(users), )
return render(request, 'user_list.html', {'users': users[page.start:page.end], 'page_html': page.page_html})

④ 在 .html 文件中

{% extends 'layout.html' %}
{% block content %}
<table class="table table-hover table-bordered">
{% for user in users %}
<tr>
<td>{{ user.name }}</td>
<td>{{ user.pwd }}</td>
</tr>
{% endfor %}
</table>
<nav aria-label="Page navigation">
<ul class="pagination">
{# {% for page in page_count %}#}
{# <li><a href="?page={{ page }}">{{ page }}</a></li>#}
{# {% endfor %}#}
{{ page_html|safe }}
</ul>
</nav>
{% endblock %}

CRM-展示列表,分页功能的更多相关文章
- mxonline实战8,机构列表分页功能,以及按条件筛选功能
对应github地址:列表分页和按条件筛选 一. 列表分页 1. pip install django-pure-pagination 2. settings.py中 install ...
- JSP+JavaBean+Servlet实现各类列表分页功能
需求: 每页列表下都有一个分页的功能,显示总数量.当前页/总页数.首页.上一页.下一页.最后一页.GO到第几页 效果动态图: 实现思路: 因为每个列表页都需要,在每个出列表页数据的servlet中都要 ...
- 【原】django实现列表分页功能
在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...
- PHP+jQuery 列表分页类 ( 支持 url 分页 / ajax 分页 )
/* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8.3.mi ...
- crm --- 1.admin , 展示列表 和 分页
一.admin (创建超级用户) 1.注册: 1.创建一个超级管理员,使用如下命令: python manage.py createsuperuser 2.输入打算使用的登录名: username:m ...
- 巨蟒django之CRM2 展示客户列表&&分页
1.展示客户列表 点击画红线中的views,进入下列界面 路径的查找顺序:应该是先查找外层的templates里边的html,然后查找app里边的templates 另一个会按照app的顺序进行寻找, ...
- Jquery、Ajax实现新闻列表页分页功能
前端页面官网的开发,离不开新闻列表,新闻列表一般都会有分页的功能,下面是我自己总结加查找网上资料写的一个分页的功能,记录一下. 首先,官网的开发建立在前后端分离的基础上: 再有,后端小伙伴们提供列表页 ...
- magento 产品列表排序、分页功能
我们以 catalog_category_layered 控制器为例说明 在catalog.xml 找到catalog_category_layered配置段 <catalog_category ...
- python2.0_day19_前端分页功能的实现
我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...
随机推荐
- explor img file
1, get offset # parted bone-debian----4gb.img GNU Parted 3.1 Using /workspace/bone-debian----4gb.img ...
- 阿里规范学习总结-不要再foreach对元素进行add()/remove()操作,
在foreach循环中,对元素进行 remove()/add() 操作需要使用Iterator ,如果运行在多线程环境下,需要对Iterator对象枷锁. public class ForeachTe ...
- moment.js
javascript日期处理类库,还有一个moment-timezone.js JavaScript时区处理类库 moment可以在browser和Node.js中使用. 安装: npm instal ...
- 关于MySQL什么时候使用索引问题以及什么情况下应不建或少建索引
一,什么情况下使用索引1. 表的主关键字 自动建立唯一索引 2. 表的字段唯一约束 ORACLE利用索引来保证数据的完整性 3. 直接条件查询的字段 在SQL中用于条件约束的字段 如zl_yhjbqk ...
- CSV空行问题
当写入CSV时生成的数据会有空行如果加入 newline =‘’ 不会新增空行 writefile = open('result.csv','w',newline =‘’) 原贴 https://bl ...
- 如何使用idea给系统平台添加子应用和应用的模块
1.添加模块smartcity-portal,由于模块是在smartcity-framework工程下的,所以按照图片所示添加 2.smartcity-portal模块添加完成后,由于portal-d ...
- element-ui隐藏组件scrollbar的使用
话不多说,直接上图 总结:el-scrollbar组件设置高度100%包裹住需要滚动的dom结构即可. 再例如: 至于配置props,参见源码https://github.com/ElemeFE/el ...
- seriviceWorker 小结
serviceWorker 的状态 install → activate. 1.初进页面,此前未加载过serviceWorker,直接进入install状态,随后进入activate状态,但是此时se ...
- 服务端渲染时无法获得环境变量的值,一直是undefined
1.服务端渲染时无法获得环境变量的值,一直是undefined 2.ngnix做代理以后无法无法获取node设置的cookie
- JavaScript新手入门 贪吃蛇
从小就在玩贪吃蛇,但是知道今天自己做了一遍才知道原理的具体的实现步骤. 刚进入界面时显示开始游戏(不重要,本人比较喜欢吹毛求疵) 中间黑色部分为游戏的主要展示部分 主要步骤及源码: body中代码,红 ...