本文共 2998 字,大约阅读时间需要 9 分钟。
一、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) |