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 %}

原文地址:https://www.cnblogs.com/lw1095950124/p/10723573.html

时间: 2024-10-29 14:26:04

CRM-展示列表,分页功能的相关文章

利用VUE框架,实现列表分页功能

原创作品转载请注明出处 先来看一下效果图: 功能描述: 1. 点击页面序号跳转到相应页面: 2. 点击单左/单右,向后/向前跳转一个页面: 3. 点击双左/双右,直接跳转到最后一页/第一页: 3. 一次显示当前页面的前三个与后三个页面: 4. 始终显示最后一个页面: HTML: <!-- 分页开始 --> <div class="u-pages" style="margin-bottom:20px; margin-top:10px;"> &l

Spring mvc+easyui做列表展示及分页

Spring mvc有一个注解@ResponseBody可以自己将返回数据解析成json,不用在response.getWriter(),设置response的编码之类的. 1.首先在spring-mvc.xml中配置如下 <bean id="mappingJacksonHttpMessageConverter"         class="org.springframework.http.converter.json.MappingJacksonHttpMessag

magento 产品列表排序、分页功能

我们以 catalog_category_layered 控制器为例说明 在catalog.xml 找到catalog_category_layered配置段 <catalog_category_layered translate="label"> <label>Catalog Category (Anchor)</label> <reference name="left"> <block type="

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

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

kingadmin后台(2)、对象列表页功能开发

目录 页面展示 对象列表 过滤功能 搜索功能 action功能 排序 页面展示 对象列表 urls.py from django.conf.urls import url from king_admin import views urlpatterns = [ # model对象列表页 url(r'^(\w+)/(\w+)/$', views.model_obj_list, name='model_obj_list') ] views.py from django.shortcuts impor

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

基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用

在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容,本篇继续这一主题,介绍页面内容常用到的数据分页处理,以及Bootstrap插件JSTree的使用.在数据的界面显示当中,表格数据的展示以及分页是非常常见的处理操作,利用Bootstrap的样式布局,以及JQuery的Ajax数据处理,就能很好实现数据的动态展示和分页处理. 1.列表展示和分页处理 1)数据的列

DevExpress中实现GridControl的分页功能

DevExpress中如何实现GridControl的分页功能 简介:DevExpress中如何实现GridControl的分页功能, 主要是利用DataNavigator和GridControl组合,自定义事件实现分页功能 接下来,我们就去实现分页功能,先看下效果图: ------------------------------------------------------------------------------------------------------------------

网站前端_JavaScript-项目经验.纯JavaScript实现客户端的分页功能?

项目简介: 说明: 此项目属于医院电子病例系统,由于历史原因,整个系统后台基于Java开发,前端使用Html+CSS+原生JavaScript,项目功能模块要求必须纯JS实现,而此次的任务是为住院病例页面编写一个客户端分页功能. 实现思路: 1. 基于客户端分页的前提是数据已经加载完毕,所以此功能模块必须等待数据加载完毕后再加载 2. 基于客户端分页的首页只需要显示24个患者信息即可 3. 上一页/当前页/下一页功能类似,基于当前页面传递同样的参数(页码, 限制患者数),所以自然而然想到了递归,