admin ---11.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, HttpResponse
from 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/sc-1067178406/p/10527102.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H-ui.admin是用H-ui前端框架开发的轻量级网站后台模版 采用源生html语言,完全免费,简单灵活,兼容性好 让您快速搭建中小型网站后台 程序员的的福音 \根目录 │ _blank.html 空白(每次我们都拿空白去创建,这样比较干净!) │ _footer.html 脚公共代码片段 │ _header.html 头部公共代码片段 │ _meta.html meta公共代码片段 │ robots.txt 搜索引擎爬虫配置文件 │ login.html 管理员登陆 │ index.html 首(主框架) │ welcome.html 我的桌面(默认永远打开的面) │ member-开头的 用户相关 │ artice-开头的 资讯相关 │ picture-开头的 图片相关 │ product-开头的 产品相关 │ page-开头的 面相关 │ system-开头的 系统相关 │ admin-开头的 管理员相关 │ charts-开头的 统计相关 …… ├─css │ H-ui.reset.css H-ui.reset css │ H-ui.css h-ui CSS │ H-ui.min.css h-ui CSS 压缩版 │ H-ui.login.css H-ui.admin后台登录样式 │ H-ui.admin.css H-ui.admin样式 │ style.css 写你自己的样式 │ ├─images UI相关的图片素材 │ ├─js │ H-ui.js H-ui核心脚本 │ H-ui.admin.js 本站相关的js ├─lib │ jquery jQuery类库(v1.9.1) │ bootstrapSwitch 开关控件 │ Hui-iconfont_v1.0 阿里图标字体库(H-ui定制) │ font-awesome 字体库文件 │ icheck 单选框、复选框控件 │ laypage laypage 翻插件 │ layer layer弹出层插件 │ laytpl JavaScript模板引擎 │ My97DatePicker 日期插件 │ Validform 表单验证插件 │ zepto zepto库 │ ueditor 百度编辑器 │ Highcharts 图表插件 │ dataTables 表格排序,检索插件 │ WebUploader 百度文件上传组件 │ lightbox2 图片预览组件 │ │ html5.js html5插件,让低版本IE支持html5元素 │ DD_belatedPNG_0.0.8a-min.js 解决IE6png透明 │ swfobject.js Flash插件 │ expressInstall.swf 检查flash插件 │ unslider.min.js Unslider图片滚动效果插件 │ stickUp.min.js 让面元素"固定"位置 │ respond.min.js 让IE兼容media │ Echo.js 图片延迟加载插件 │ colpick.js 颜色插件 │ handlebars.js js模版引擎 │ waterfall.min.js 瀑布流插件 └─temp 测试数据、图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值