目录

  • 一.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-展示列表,分页功能的更多相关文章

  1. mxonline实战8,机构列表分页功能,以及按条件筛选功能

    对应github地址:列表分页和按条件筛选     一. 列表分页   1. pip install django-pure-pagination   2. settings.py中 install ...

  2. JSP+JavaBean+Servlet实现各类列表分页功能

    需求: 每页列表下都有一个分页的功能,显示总数量.当前页/总页数.首页.上一页.下一页.最后一页.GO到第几页 效果动态图: 实现思路: 因为每个列表页都需要,在每个出列表页数据的servlet中都要 ...

  3. 【原】django实现列表分页功能

    在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...

  4. 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 ...

  5. crm --- 1.admin , 展示列表 和 分页

    一.admin (创建超级用户) 1.注册: 1.创建一个超级管理员,使用如下命令: python manage.py createsuperuser 2.输入打算使用的登录名: username:m ...

  6. 巨蟒django之CRM2 展示客户列表&&分页

    1.展示客户列表 点击画红线中的views,进入下列界面 路径的查找顺序:应该是先查找外层的templates里边的html,然后查找app里边的templates 另一个会按照app的顺序进行寻找, ...

  7. Jquery、Ajax实现新闻列表页分页功能

    前端页面官网的开发,离不开新闻列表,新闻列表一般都会有分页的功能,下面是我自己总结加查找网上资料写的一个分页的功能,记录一下. 首先,官网的开发建立在前后端分离的基础上: 再有,后端小伙伴们提供列表页 ...

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

    我们以 catalog_category_layered 控制器为例说明 在catalog.xml 找到catalog_category_layered配置段 <catalog_category ...

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

    我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...

随机推荐

  1. Adobe Flash Player 29.0.0.140官方正式版

    Adobe Flash Player 29 正式版例行更新,v29.0.0.140 这是最新详细版本号,Adobe采取和微软相似的更新策略,在每个月的第二个周二为产品发布安全更新.Adobe® Fla ...

  2. Python 元组tuple相关知识

    列表是有序的,列表元素可以被修改.元组是有序的,元组的一级元素不可被修改,但如果是元组的二级.三级元素并且刚好该元素是列表,则可以被修改.元组中的元组可进行for 循环,因此元组也是可迭代对象.字符串 ...

  3. hello2 Source Analisis

    hello2应用程序是一个web模块,它使用Java Servlet技术来显示问候和响应.此应用程序的源代码位于 _tut-install_/examples/web/servlet/hello2/目 ...

  4. Labview笔记-创建自定义控件

    labview中的控件种类很多,但是样式或者外观有时不能满足我们的需求.如何制作一个好看酷酷的自定义控件呢? 以开关为例,我们先添加一个labview中自带的确定开关控件 之后右键该控件--高级--自 ...

  5. matlab批量读取一个文件夹里类似命名的mat文件

    参考网址: Matlab读取同一路径下多个txt或mat文件总结 matlab 批量读取数据文件.mat .dat 整理:matlab批量读入数据文件的方法 首先命名方式体现在只是名字里数字有变化,其 ...

  6. JVM学习一:JVM运行时数据区

    注:此图适合JDK 7之前的版本,JDK 8开始增加了元数据空间,内存区结构有所变化(JDK 7将字符串常量池移除了永久代,JDK 8去永久代,迎元数据空间metaspace) 1.程序计数器:程序计 ...

  7. ansible 自动化运维

    Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...

  8. 安卓开发学习之Menu

    安卓开发中菜单是一个很重要的组件,从安卓开发文档(http://wear.techbrood.com/guide/index.html)中可以看到,安卓UI设计中的Menu主要分为: A.Option ...

  9. Windows Essentials Movie Maker 安装失败报错 ——问题解决

    Windows Essentials Movie Maker 安装失败报错: (软件包名: wlsetup-all.exe) 查到官方论坛给出了一些回复: https://social.technet ...

  10. webpack 代码分割一点事

    webpack 俨然已经成为前端最主流的构建工具,其功能多种多样,我们今天就来分析下关于代码分割这部分的一点事,并在最后讲述如何实现在webpack编译出的代码里手动添加一个异步chunk. 什么是c ...