一、Django基本流程和命令行工具
1. 安装Django
1
|
pip3 install django
|
2. 在当前目录新建一个mysite项目
1
|
django
-
admin.py startproject mysite
|
startproject命令创建一个目录,包含以下文件:
__init__.py # 空文件,让Python把该目录当成一个包
manage.py # 命令行工具,提供多种方式与django交互
setting.py # django项目的配置文件
urls.py # django项目的全局URL设置,可视其为你的django网站
3. 在当前项目中创建一个app01应用
1
|
python3 manage.py startapp app01
|
startapp命令创建一个目录,包含以下文件:
__init__.py # 空文件,让Python把该目录当成一个包
models.py # 数据模型
views.py # 视图函数(即MVC中的控制器)
tests.py # 单元测试
4. 配置setting.py文件
# 将应用加入到项目的配置文件中,添加到INSTALLED_APPS选项末尾
1
2
3
4
|
INSTALLED_APPS
=
[
...
'app01'
,
]
|
# 在项目文件夹下新建一个templates文件夹,并将文件夹路径添加到配置文件中
1
2
3
4
5
6
7
|
TEMPLATES
=
[
{
....
'DIRS'
: [os.path.join(BASE_DIR,
'templates'
)]
...
},
]
|
# 配置使用MYSQL数据库
1
2
3
4
5
6
7
8
9
10
|
DATABASES
=
{
'default'
:{
'ENGINE'
:
'django.db.backends.mysql'
,
'NAME'
:
'test'
,
'USER'
:
'root'
,
'PASSWORD'
:
'mysql'
,
'HOST'
: '',
'PORT'
: '',
}
}
|
'ENGINE':数据库引擎
'NAME':数据库名,要求已经在MYSQL中创建完成
'USER':MYSQL用户名
'PASSWORD':密码
'HOST':连接的MYSQL数据库,默认不写是127.0.0.1
'PORT':数据库端口,默认3306
# 设置中文以及中国时区
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
5. 编辑app01/model.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
from
django.db
import
models
class
Publisher(models.Model):
name
=
models.CharField(max_length
=
30
, verbose_name
=
"名称"
)
address
=
models.CharField(
"地址"
, max_length
=
50
)
city
=
models.CharField(
'城市'
, max_length
=
60
)
state_province
=
models.CharField(max_length
=
30
)
country
=
models.CharField(max_length
=
50
)
website
=
models.URLField()
class
Meta:
verbose_name
=
'出版商'
verbose_name_plural
=
verbose_name
def
__str__(
self
):
return
self
.name
class
Author(models.Model):
name
=
models.CharField(max_length
=
30
)
hobby
=
models.CharField(max_length
=
20
, default
=
"", blank
=
True
)
def
__str__(
self
):
return
self
.name
class
AuthorDetail(models.Model):
sex
=
models.BooleanField(max_length
=
1
, choices
=
((
0
,
'男'
), (
1
,
'女'
),))
email
=
models.EmailField()
address
=
models.CharField(max_length
=
50
)
birthday
=
models.DateField()
author
=
models.OneToOneField(Author)
class
Book(models.Model):
title
=
models.CharField(max_length
=
100
, verbose_name
=
"书名"
)
authors
=
models.ManyToManyField(Author)
publisher
=
models.ForeignKey(Publisher, verbose_name
=
"出版社"
)
publication_date
=
models.DateField(null
=
True
)
price
=
models.DecimalField(max_digits
=
5
, decimal_places
=
2
, default
=
10
, verbose_name
=
"价格"
)
def
__str__(
self
):
return
self
.title
|
6. 同步数据库,生成数据库表
1
2
|
python3 manage.py makemigrations
python3 manage.py migrate
|
7. 创建admin管理用户
1
|
python3 manage.py createsuperuser
|
8. 编辑app01/admin.py文件,将数据库模型注册到admin中管理
1
2
3
4
5
6
7
|
from
django.contrib
import
admin
from
app01
import
models
admin.site.register(models.Publisher)
admin.site.register(models.Author)
admin.site.register(models.AuthorDetail)
admin.site.register(models.Book)
|