Django Admin笔者使用下来可以说是Django框架的开发利器,业务model构建完成后,我们就能快速的构建一个增删查改的后台管理框架。对于大量的企业管理业务开发来说,可以快速的构建一个可发布的基本的原型,也可以直接通过后台管理快速开发基本的管理系统,提高产品迭代的效率和开发周期。现在就让我们开始配置程序,来掀开admin的庐山真面目!

1.1. 修改程序调试默认端口

  笔者在这里为了避免与其它程序的默认端口冲突,我们把工程的默认端口改成8001,这样可以减少调试过程中遇到端口冲突时初学者的迷惑。

1.2. 调试运行程序

  通过IDE环境启动Python Django程序,工程右键菜单—》Start server命令调试运行程序,如下图:

浏览器输入网址:http://127.0.0.1:8000/admin/

我们就来了admin后台管理的登录界面,输入上一章节我们创建的超级用户和密码就可以进到默认的后台管理主界面。

  Django Admin后台管理主界面

  默认状态下创建的Django 工程默认打开了admin后台,接下来我们演示如何增加Task App Model的管理界面吧。首先,我们需要做一些基本的工程设置,在settings.py文件里设置时区,默认语言等。

1.3. 基础设置

1.3.1. 中文界面

  修改项目的settings.py文件中的配置项,浏览器刷新重新主界面,你会发现界面的内容变成中文了。

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
修改为
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

1.3.2. 注册应用模型

  若要把app应用“Task”model显示在后台管理中,我们需要在admin.py中注册。打开工程中应用Task中的admin.py文件。

注册model “Task”代码如下:

from django.contrib import admin
from .models import Task #Task模型的管理器
class TaskAdmin(admin.ModelAdmin):
pass #在admin中注册绑定
admin.site.register(Task, TaskAdmin)

  刷新浏览器,维护Task模型的后台管理功能就出来了,我们可以简单的录一个任务试试。

  添加一个task模型,从下图中我们能够看到我们在创建模型时给字段添加的“verbose_name”的值直接显示在页面上了。

  保存表单后返回task列表。

1.3.3. 设置列表显示

  我们可以对该列表界面进行设置,主要包括列表显示列、页数量、筛选器等属性。

from django.contrib import admin
from .models import Task #Task模型的管理器
class TaskAdmin(admin.ModelAdmin):
#listdisplay 设置要显示在列表中的字段
list_display = ('TaskNum', 'Source', 'Target', 'Barcode','State','Priority','BeginDate','EndDate') #list_per_page设置每页显示多少条记录
list_per_page = 50 #ordering设置默认排序字段
ordering = ('TaskId',) #在admin中注册绑定
admin.site.register(Task, TaskAdmin)

  另外,默认可以点击每条记录第一个字段的值可以进入编辑界面,可以设置其他字段也能点击链接进入编辑界面。

from django.contrib import admin
from .models import Task #Task模型的管理器
class TaskAdmin(admin.ModelAdmin): #listdisplay设置要显示在列表中的字段
list_display = ('TaskId','TaskNum', 'Source', 'Target', 'Barcode','State','Priority','BeginDate','EndDate') #list_per_page设置每页显示多少条记录
list_per_page = 50 #ordering设置默认排序字段
ordering = ('TaskId',) #设置哪些字段可以点击进入编辑界面
list_display_links = ('TaskId', 'TaskNum') #在admin中注册绑定
admin.site.register(Task, TaskAdmin) 

1.3.4. 设置列表过滤器

  筛选器和搜索框是Django后台管理重要的功能之一,而且Django提供了一些实用的筛选器配置。

from django.contrib import admin
from .models import Task #Task模型的管理器
class TaskAdmin(admin.ModelAdmin): ... #筛选器
list_filter =('State','Priority') #过滤器
search_fields =('TaskNum', 'Barcode', ) #搜索字段

7.4. 字段颜色显示

  如针对优先级字段,我们希望不同的级别显示不同的颜色,这个我们需要在model里面增加函数PriorityColor来响应这个需求。

from django.db import models
from django.contrib.auth.models import User
from django.utils.html import format_html PRIORITY=((1,u'正常'),(2,u'急'),(3,u'紧急')) class Task(models.Model):
TASK_STATE=((1,u'未处理'),(4,u'处理成功'),(5,u'执行中'),(99,u'完成'),(-1,u'已取消')) TaskId = models.AutoField(u'ID',primary_key=True, db_column='task_id')
TaskNum = models.IntegerField(u'任务号', null=False, db_column='task_num')
Source = models.CharField(u'源地址', null=False, max_length=50, db_column='source')
Target = models.CharField(u'目标地址', null=False, max_length=50, db_column='target')
Barcode = models.CharField(u'容器条码', null=False, max_length=50, db_column='barcode')
State = models.IntegerField(u'状态', choices=TASK_STATE, null=False, db_column='state')
Priority = models.IntegerField(u'优先级', choices=PRIORITY, null=True, db_column='priority')
BeginDate = models.DateTimeField(u'开始时间',null=True, db_column='begin_date')
EndDate = models.DateTimeField(u'结束时间',null=True, db_column='end_date')
SystemDate = models.DateTimeField(u'系统时间', null=False, auto_now_add=True, db_column='system_date')
User = models.ForeignKey(User, verbose_name="操作员", on_delete=models.CASCADE,db_column='user_id') class Meta:
db_table = 'task_task'
ordering = ['-Priority','TaskId'] def PriorityColor(self):
colorCode='green'
if self.Priority==3:
colorCode='red'
elif self.Priority==2:
colorCode='orange' return format_html(
'<span style="color: {};">{}</span>',
colorCode,
self.get_Priority_display(),
)

  显示效果如下图,当然标题还是E文。

  新增字段标题设置,现在标题也改成中文了。

...

    def PriorityColor(self):
#return self.Priority
colorCode='green'
if self.Priority==3:
colorCode='red'
elif self.Priority==2:
colorCode='orange' return format_html(
'<span style="color: {};">{}</span>',
colorCode,
self.get_Priority_display(),
)
PriorityColor.short_description='优先级' 

7.5. 设置页面title内容和标题

  在admin.py添加我们如下代码,来修改默认title和header值。

...

    #在admin中注册绑定
admin.site.register(Task, TaskAdmin) admin.site.site_header = '智能控制系统'
admin.site.site_title = 'WCS'

7.6. 模块中文名

  当前,Task模块显示的名称不是想要的中文“任务管理”名称,需要打开apps.py增加如下代码:

from django.apps import AppConfig

class TaskConfig(AppConfig):
name = 'Task'
verbose_name='任务管理'

  同时,修改Task应用下的“__init__.py”文件,添加如下代码:

default_app_config='Task.apps.TaskConfig'

  初始化的时候app启用刚才添加的默认配置类,就会显示“verbose_name”对应的中文名。

7.7. 中文菜单

  现在我们的主界面还有“Tasks”没有显示中文,“Tasks”对应的中文显示我们得在models.py里添加model的verbose_name属性值即可,代码如下:

from django.db import models
from django.contrib.auth.models import User
from django.utils.html import format_html PRIORITY=((1,u'正常'),(2,u'急'),(3,u'紧急')) class Task(models.Model):
TASK_STATE=((1,u'未处理'),(4,u'处理成功'),(5,u'执行中'),(99,u'完成'),(-1,u'已取消')) TaskId = models.AutoField(u'ID',primary_key=True, db_column='task_id')
TaskNum = models.IntegerField(u'任务号', null=False, db_column='task_num') ... class Meta:
db_table = 'task_task'
ordering = ['-Priority','TaskId']
verbose_name = verbose_name_plural = "任务" 

7.8. 小结

  本章节我们主要介绍了admin后台管理的列表设置和主页设置内容,通过简单的配置我们就能快速的获得一个基本的管理后台,这确实大大的提高了业务系统的开发效率。关键admin还能轻易的就支持电脑/平板/手机。

  下一章节我们将着重介绍编辑界面的设置。

python工业互联网应用实战3—Django Admin列表的更多相关文章

  1. python工业互联网应用实战5—Django Admin 编辑界面和操作

    1.1. 编辑界面 默认任务的编辑界面,对于model属性包含"choices"会自动显示下来列表供选择,"datetime"数据类型也默认提供时间选择组件,如 ...

  2. python工业互联网应用实战2—从需求开始

    前言:随着国家工业2025战略的推进,工业互联网发展将会提速,将迎来一个新的发展时期,越来越多的企业开始逐步的把产线自动化,去年年底投产的小米亦庄的智能工厂就是一个热议的新闻.小米/华为智能工厂只能说 ...

  3. python工业互联网应用实战3—模型层构建

    本章开始我们正式进入到实战项目开发过程,如何从需求分析获得的实体数据转到模型设计中来,变成Django项目中得模型层.当然,第一步还是在VS2019 IDE环境重创建一个工程项目,本文我们把工程名称命 ...

  4. python工业互联网应用实战7—业务层

    本章我们演示代码是如何"进化"的,实战的企业日常开发过程中,系统功能总伴随着业务的不断增加,早期简单的代码慢慢的越来越复杂,敏捷编程中的"禅"--简单设计.快速 ...

  5. python工业互联网应用实战8—django-simpleui

    笔者也使用过一段时间adminx组件,后来由于adminx停更,又遇到更简单的django-simpleui后,现在基本上只使用simpleui了,使用simpleui的几个好处,笔者认为排在第一位的 ...

  6. python工业互联网应用实战17—前后端分离模式之django template vs jquery3

    上一章节我们完成了"CRUD"的后面3个功能点,新增由于改动较大我们专门增加本章来阐述,主要是完成技术栈切换后,会发现模板的代码判断过多,逻辑过于复杂.对未来存在的扩展和维护友好性 ...

  7. python工业互联网应用实战1—SQL与ORM

    从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. ...

  8. python工业互联网应用实战11—客户端UI

    这个章节我们将演示用户端界面的开发,当前演示界面还是采用先实现基本功能再逐步完善的"敏捷"模式.首先聚焦在功能逻辑方面实现普通用户与系统的交互,普通用户通过url能查看到当前任务的 ...

  9. python工业互联网应用实战14——单元测试覆盖率

    前面的章节我们完成了任务管理主要功能的开发及单元测试编写,可如何知道单元测试效果怎么样呢?测试充分吗?还有没有没有测到的地方呢? 本章节我们介绍一个统计测试代码覆盖率的利器Coverage,Cover ...

随机推荐

  1. Python基础入门:注释、变量、运算符与数据类型

    一.为什么要学习python? python的特点 python作为一门脚本语言,在越来越多的行业和领域发挥着重大作用,比如机器学习.网站开发.数据分析.爬虫.自动化测试. 同时,python具备以下 ...

  2. Flutter低版本迁移到高版本

    记录一次Flutter v1.12.13+hotfix.8 升级到1.22.4(当前最新) 后 ,旧项目的适配过程 工具:Android Studio 4.1.1 1.android 的MainAct ...

  3. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境

    笔者鼓弄了两个星期,终于把所有有关hadoop的环境配置好了,一是虚拟机上的完全分布式集群,但是为了平时写代码的方便,则在windows上也配置了hadoop的伪分布式集群,同时在IDEA上就可以编写 ...

  4. 解决CentOS 8 Docker容器无法上网的问题

    发布于:2020-11-28  Docker  2条评论  3,051 views  如需VPS代购.PHP开发.服务器运维等服务,请联系博主QQ:337003006 CentOS 8已经发行好长一段 ...

  5. Redis性能篇(二)CPU核和NUMA架构的影响

    Redis被广泛使用的一个很重要的原因是它的高性能.因此我们必要要重视所有可能影响Redis性能的因素.机制以及应对方案.影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 ...

  6. Hive日期函数总结(转学习使用)

    一.时间戳函数 1.获取当前时区的UNIX时间戳:select unix_timestamp(); 2.将指定时间转为UNIX时间戳: select unix_timestamp('2012-03-0 ...

  7. 如何在Elasticsearch中解析未分配的分片(unassigned shards)

    一.精确定位到有问题的shards 1.查看哪些分片未被分配 curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unas ...

  8. Ubuntu 18.04 使用docker 部署gitlab并且使用自定义端口号

    搭建原因 两个月前我搭建了公司的docker(无法自定义端口,),当初只想着把托管在GitHub的项目代码放在公司的服务器上面,后来忙着修改人脸服务器代码,忘记了,这个月由于领导提的需求比较多,还是托 ...

  9. Promise入门到精通(初级篇)-附代码详细讲解

    Promise入门到精通(初级篇)-附代码详细讲解 ​     Promise,中文翻译为承诺,约定,契约,从字面意思来看,这应该是类似某种协议,规定了什么事件发生的条件和触发方法. ​     Pr ...

  10. Nginx基础知识学习(安装/进程模型/事件处理机制/详细配置/定时切割日志)

    一.Linux下Nginx的安装 1.去官网 http://nginx.org/download/下载对应的Nginx安装包,推荐使用稳定版本. 2.上传Nginx到Linux服务器. 3.安装依赖环 ...