Django官方教程总结(二)
- 建立SQLite数据库
- 创建模型
- Django提供自动生成的管理页面
数据库配置
在Django中,默认使用了自带的SQLite数据库,为一个文件,保存在项目的根目录下。
# mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
当然可以使用其它数据库以及设置保存的位置,可以参考。
更改时区
打开mysite/settings.py,通过修改TIME_ZONE来更改时区。
# 更改为上海时区
TIME_ZONE = 'Asia/Shanghai'
如不修改,使用Django的DateTimeField获得的时间将与当前系统的时间不一致。
创建默认数据库
在mysite/settings.py文件中的INSTALLED_APPS下默认包括了Django自带的一些应用,比如管理员站点、认证授权系统等。
我们在使用这些应用之前需要在数据库中创建相应的数据表,执行以下命令:
python manage.py migrate
创建模型
在Django中,第一步应该是自定义模型,在polls/models.py中加入下面代码:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DataTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete = models.CASCADE)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default=0)
定义该模型所需的数据元素以及类型,外键也应在模型中定义。然后Django就会自动生成对应的数据表以及其它代码。
激活模型
为了在项目中包含这个应用,我们需要在INSTALLED_APPS中将polls包括进来:
# mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
然后运行下面的命令:
python manage.py makemigrations polls
生成一个迁移文件,位置存储在polls/migrations/0001_initial.py里。该迁移文件保存了创建数据表的一些语句,当然我们也可以手动修改迁移文件。
然后运行下面的命令,来创建数据表:
python manage.py sqlmigrate polls 0001
但是这个sqlmigrate命令并没有真正的创建数据表,它只是将命令输出在屏幕上,让我们看看等会Django会执行哪些SQL语句。接下来再次运行migrate命令,在数据库中创建自定义的数据表:
python manage.py migrate
迁移的好处在于,在开发过程中只需要关注模型的代码部分,而不需要重新在数据库中删除或者新增对应的表,这些步骤Django已经帮我们完成了。
Django管理页面
大部分网站都需要后台界面来进行增删改查等操作,Django会根据模型自动来创建后台界面,方便了开发。
创建一个管理员账号
python manage.py createsuperuser
然后输入用户名和密码等信息
启动服务器
python manage.py runserver
在本地下,访问http://127.0.0.1:8000/admin/ 进入管理员登陆界面。
在管理页面中加入投票应用
根据上述网站进入管理页面,我们是看不到Question和Chioce应用的,因为我们还需要告诉管理员Question和Choice都需要一个后台接口,我们可以在polls/admin.py中加入以下代码进行注册:
from django.contrib import admin
from .models import Question, Choice
# 为Question和Choice注册后台接口
admin.site.register(Question)
admin.site.register(Choice)
小节
- 配置数据库,如果不做任何修改,将使用Django默认的SQLite数据库。
- 更改时区
- 创建应用所需的模型
- 根据模型自动生成相应的数据表
- 为模型注册后台接口,方便在后台进行增删改查