Django Admin筆者使用下來能夠說是Django框架的開發利器,業務model構建完成後,咱們就能快速的構建一個增刪查改的後臺管理框架。對於大量的企業管理業務開發來講,能夠快速的構建一個可發佈的基本的原型,也能夠直接經過後臺管理快速開發基本的管理系統,提升產品迭代的效率和開發週期。如今就讓咱們開始配置程序,來掀開admin的廬山真面目!html
1.1. 修改程序調試默認端口django
筆者在這裏爲了不與其它程序的默認端口衝突,咱們把工程的默認端口改爲8001,這樣能夠減小調試過程當中遇到端口衝突時初學者的迷惑。瀏覽器
經過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
修改項目的settings.py文件中的配置項,瀏覽器刷新從新主界面,你會發現界面的內容變成中文了。調試
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' 修改成 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai'
若要把app應用「Task」model顯示在後臺管理中,咱們須要在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列表。
咱們能夠對該列表界面進行設置,主要包括列表顯示列、頁數量、篩選器等屬性。
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)
篩選器和搜索框是Django後臺管理重要的功能之一,並且Django提供了一些實用的篩選器配置。
from django.contrib import admin from .models import Task #Task模型的管理器 class TaskAdmin(admin.ModelAdmin): ... #篩選器 list_filter =('State','Priority') #過濾器 search_fields =('TaskNum', 'Barcode', ) #搜索字段
如針對優先級字段,咱們但願不一樣的級別顯示不一樣的顏色,這個咱們須要在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='優先級'
在admin.py添加咱們以下代碼,來修改默認title和header值。
... #在admin中註冊綁定 admin.site.register(Task, TaskAdmin) admin.site.site_header = '智能控制系統' admin.site.site_title = 'WCS'
當前,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」對應的中文名。
如今咱們的主界面還有「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 = "任務"
本章節咱們主要介紹了admin後臺管理的列表設置和主頁設置內容,經過簡單的配置咱們就能快速的得到一個基本的管理後臺,這確實大大的提升了業務系統的開發效率。關鍵admin還能輕易的就支持電腦/平板/手機。
下一章節咱們將着重介紹編輯界面的設置。