前言
用過Django框架的童鞋肯定都知道,在創建完Django項目后,每個app下,都會有一個urls.py文件,里邊會有如下幾行:
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
上邊看到導入的admin模塊,就是本節所要說的主要內容
主要功能
功能1:提供數據庫管理功能
基於admin模塊,可以實現類似數據庫客戶端的功能,對數據進行增刪改查
功能2:二次開發
基於該模塊的數據管理功能,可以二次定制一些實用的功能。
使用方法
步驟1:在settings.py中,INSTALLED_APPS中,加入django.contrib.admin
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', #admin依賴 'django.contrib.contenttypes', #admin依賴 'django.contrib.sessions', #admin依賴 ...... ]
步驟2:urls.py創建admin路由
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), .... ]
步驟3:在settings.py配置文件中,中間件注冊
MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', .... ]
步驟4:創建admin管理用戶
python manage.py createsuperuser
步驟5:在app 的models.py文件中創建表信息,即表類
from django.db import models class Gender(models.Model): name = models.CharField(max_length=32) class userinfo(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=30, verbose_name='用戶名',editable=False) email = models.EmailField(db_index=True) memo = models.TextField() img = models.ImageField(upload_to='upload') user_type = models.ForeignKey("UserType", null=True, blank=True) gender_choices = ( (0, "男"), (1, "女"), ) gender = models.IntegerField(choices=gender_choices,default=1) class UserType(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name
步驟6:在admin.py中注冊表
from django.contrib import admin # Register your models here. from app01 import models admin.site.register(models.userinfo) admin.site.register(models.UserType)
步驟7:生成表結構
python manage.py makemigrations && python manage.py migrate
注意:在數據庫表結構發生變動時,再次執行python manage.py makemigrations就會報錯,這是因為此時表中可能已經有數據,貌然變動表結構會有影響,此時的解決方法有兩種,一種是,設置新增字段的default='xxx'某個值, 但是這種通用性不是很好。 另外一種是,設置該字段null=True。即允許為空即可
步驟8:運行項目,登陸管理界面
python manage.py runserver 訪問URL:http://IP:8000/admin
最終展示頁面
顯示出來這個頁面,就表示admin已經可以正常管理了。
顯示優化
優化1:顯示字段信息
這時候去UserType里邊添加幾條數據后,會發現這幾天數據都顯示User Type object,顯示很不友好。圖示如下
處理辦法就是去models.py中,修改class UserType類,增加
def __str__(self): return self.name
增加之后,再次查看,就會顯示用戶之前增加的可視名稱了
優化2:優化表單信息為中文顯示
在userinfo表中,設置了verbose_name='用戶名',這個參數的作用就是在用戶添加信息的時候,顯示“用戶名”,而不是默認的name