前言
用過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

