Django学习2--创建应用程序、models模型管理、系统管理后台
创建app:
这里,我创建一个资产系统的app,名为assets:
1
2
3
4
5
|
# cd iceny # python manage.py startapp assets # cd assets # ls #admin.py apps.py __init__.py migrations models.py tests.py views.py |
startapp命令建立了应用程序所需的基础设施,其中最重要的是models.py,admin.py,views.py。
models.py:定义在应用程序中管理的数据。
views.py:定义在项目使用过程中需要执行的视图(操作)。
admin.py:用于向后台管理网站注册创建的模型(models)。
修改数据库配置:
Django默认使用SQLite数据库为默认的数据库,如果我们想使用我们自己的mysql数据,则需要修改setting中的数据库配置项,如下:
1
2
3
4
5
6
7
8
9
10
11
|
# vi iceny/iceny/settings.py DATABASES = { 'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'iceny' ,
'USER' : 'root' ,
'PASSWORD' : 'xxxxxx' ,
'HOST' : 'xx.xx.xx.xx' ,
'PORT' : '3306' ,
}
} |
定义好数据库后,就可以初始化数据库。
1
|
# python manage.py migrate |
Django模型:
models.py可以定义一个Django的模型,模型其实就是等于数据库的一张表,在models里,我们可以定义这张表的表名,字段,及字段存储的数据类型,这里可以简单的理解为定义了一段创建表的语句。
本例中,我们在aseets程序中创建一个Server_Info模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# vi assets/models.py from django.db import models
class Server_Info(models.Model): env = models.CharField(max_length=20,null=False)
hostname = models.CharField(max_length=20,null=True)
ip_in = models.CharField(max_length=20,null=True)
ip_out = models.CharField(max_length=20,null=True)
os = models.CharField(max_length=100,null=True)
mem = models.CharField(max_length=50,null=True)
disk = models.CharField(max_length=100,null=True)
cpu = models.CharField(max_length=100,null=True)
cpu_thread = models.IntegerField(null=True)
other_info = models.CharField(max_length=200,null=True)
|
在这里,我们定义了一个Server_Info表来存储服务器的信息,并定义了该表的一些字段,如主机名、ip、内存之类。
编写好Model.py文件后,需要**模型,要使用模型,就要让Django将应用程序包含到项目中。如下:
1
2
3
4
5
6
7
8
9
10
|
# vi iceny/iceny/settings.py INSTALLED_APPS = [ 'django.contrib.admin' ,
'django.contrib.auth' ,
'django.contrib.contenttypes' ,
'django.contrib.sessions' ,
'django.contrib.messages' ,
'django.contrib.staticfiles' ,
'assets' , ##把新建的程序添加到这里
]
|
接下来,可以通过Django来创建我们在model.py中定义的表,使我们可以通过Django来存储和操作该模型:
1
2
3
4
|
# python manage.py makemigration assets Migrations for 'assets' :
0001_initial.py:
- Create model Server_Info
|
可以看到创建了模型Server_Info,进入mysql数据库看看是否创建了相关的表:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | iceny | ------创建的项目库 | mysql | | performance_schema | | test |
+--------------------+ 6 rows in set (0.01 sec)
mysql> use iceny Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +----------------------------+ | Tables_in_iceny | +----------------------------+ | assets_server_info | ---assets.server_info模型 | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | +----------------------------+ 12 rows in set (0.00 sec)
mysql> desc assets_server_info; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment |
| env | varchar(20) | NO | | NULL | |
| hostname | varchar(20) | YES | | NULL | |
| ip_in | varchar(20) | YES | | NULL | | | ip_out | varchar(20) | YES | | NULL | | | os | varchar(100) | YES | | NULL | | | mem | varchar(50) | YES | | NULL | | | disk | varchar(100) | YES | | NULL | | | cpu | varchar(100) | YES | | NULL | | | cpu_thread | int(11) | YES | | NULL | | | other_info | varchar(200) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ 11 rows in set (0.13 sec)
|
Django已创建了项目所需的数据库,相关表,以及我们定义的模型相关的表。
Django后台管理网站:
创建了模型之后,我们需要对模型进行操作,让它存储一些相关的数据到数据库中,Django提供了一个后台管理页面,可以让我们简单地操作Django模型。
要使用后台管理,首先需要创建一个超级用户:
1
2
3
4
5
6
|
# python3.6 manage.py createsuperuser Username (leave blank to use 'root' ): admin
Email address: Password: Password (again): Superuser created successfully. |
向管理网站注册模型:(注:Django默认已经在管理网站中添加了一些模型,比如User和Group)
1
2
3
4
5
6
7
|
# vi iceny/assets/admin.py from django.contrib import admin
from assets.models import Server_Info ---导入自定义模型
# Register your models here. admin.site.register(Server_Info) --注册模型 |
完成以上步骤后,开启Django,访问站点:http://xx.xx.xx.xx:8081/admin/,进行模型的数据操作。