python工业互联网应用实战3—Django Admin列表

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

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

  笔者在这里为了不与其它程序的默认端口冲突,咱们把工程的默认端口改为8001,这样能够减小调试过程当中遇到端口冲突时初学者的迷惑。浏览器

  

 

1.2. 调试运行程序

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

 

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

 咱们就来了admin后台管理的登陆界面,输入上一章节咱们建立的超级用户和密码就能够进到默认的后台管理主界面。函数

 

   Django Admin后台管理主界面spa

 

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

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应用“Taskmodel显示在后台管理中,咱们须要在admin.py中注册。打开工程中应用Task中的admin.py文件。code

 

  注册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添加咱们以下代码,来修改默认titleheader值。

...

    #在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里添加modelverbose_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还能轻易的就支持电脑/平板/手机。

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

相关文章
相关标签/搜索