知易行难,知易行难。前思后想一完言,后觉不如不言。南无阿弥陀佛。
主要功能
功能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。即允许为空即可
解决方法: 在外部键的后面加上 on_delete=models.CASCADE