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