用過Django框架的童鞋確定都知道,在建立完Django項目後,每一個app下,都會有一個urls.py文件,裏邊會有以下幾行:python
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
上邊看到導入的admin模塊,就是本節所要說的主要內容數據庫
功能1:提供數據庫管理功能django
基於admin模塊,能夠實現相似數據庫客戶端的功能,對數據進行增刪改查session
功能2:二次開發app
基於該模塊的數據管理功能,能夠二次定製一些實用的功能。框架
步驟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路由url
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), .... ]
步驟3:在settings.py配置文件中,中間件註冊spa
MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', .... ]
步驟4:建立admin管理用戶server
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已經能夠正常管理了。
這時候去UserType裏邊添加幾條數據後,會發現這幾天數據都顯示User Type object,顯示很不友好。圖示以下
處理辦法就是去models.py中,修改class UserType類,增長
def __str__(self): return self.name
增長以後,再次查看,就會顯示用戶以前增長的可視名稱了
優化2:優化表單信息爲中文顯示
在userinfo表中,設置了verbose_name='用戶名',這個參數的做用就是在用戶添加信息的時候,顯示「用戶名」,而不是默認的name