官方文档
mysite/settings.py
。这是个包含了 Django 项目设置的 Python 模块。
通常,这个配置文件使用 SQLite 作为默认数据库。如果开发者不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以无需安装额外东西来使用它。
pip install mysqlclient
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 驱动
'HOST':'127.0.0.1', #主机地址
'PORT':'3306',# 端口号
'NAME':'django',# 数据库名
'USER':'root',# 登录用户名
'PASSWORD':'200039',#登录密码
"OPTIONS":{
'init_command':"SET sql_mode='STRICT_TRANS_TABLES'", # 防止数据丢失
},
# 'NAME': BASE_DIR / 'db.sqlite3',
}
}
Windows系统设置不起作用,Django会使用本机的时间。
包括了项目中启用的所有 Django 应用。
INSTALLED_APPS = [
'django.contrib.admin', # 管理员站点
'django.contrib.auth', # 认证授权系统
'django.contrib.contenttypes', #内容类型框架
'django.contrib.sessions', # 会话框架
'django.contrib.messages', # 消息框架
'django.contrib.staticfiles', # 管理静态文件的框架
]
python manage.py migrate
Django自动创建的表“们”
数据库结构设计和附加的其它元数据。
在这个投票应用中,需要创建两个模型:问题 Question
和选项 Choice
。Question
模型包括问题描述和发布时间。Choice
模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。
polls/models.py
from django.db import models
# Create your models here.
class Question(models.Model):# 继承Model类
# 每个模型有许多类变量,它们都表示模型里的一个数据库字段
# 每个字段都是Field类的实例
question_text = models.CharField(max_length = 200) # 问题文本
pub_date = models.DateTimeField("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) # 设置默认值
首先把 polls
应用安装到项目里。
运行命令
python manage.py makemigrations polls
通过运行 makemigrations
命令,Django 会检测对模型文件的修改,并且把修改的部分储存为一次迁移。
迁移是 Django 对于模型定义(也就是你的数据库结构)的变化的储存形式 - 它们其实也只是一些磁盘上的文件。
Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 —— migrate
首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate
命令接收一个迁移的名称,然后返回对应的 SQL
py manage.py sqlmigrate polls 0001
【注意】
polls
)和模型名的小写形式( question
和 choice
)连接而来。(可自定义)"_id"
。(可自定义)FOREIGN KEY
生成。auto_increment
(MySQL)、 serial
(PostgreSQL)和 integer primary key autoincrement
(SQLite),Django 会自动处理。那些和引号相关的事情 - 例如,是使用单引号还是双引号 - 也一样会被自动处理。sqlmigrate
命令并没有真正在你的数据库中的执行迁移 - 相反,它只是把命令输出到屏幕上,让你看看 Django 认为需要执行哪些 SQL 语句。→ 真正创建
py manage.py migrate
这个 migrate
命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations
来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。
改变模型的三步
- 编辑
models.py
文件,改变模型。- 运行
python manage.py makemigrations
为模型的改变生成迁移文件。- 运行
python manage.py migrate
来应用数据库迁移。
进入交互式Python命令行
py manage.py shell
查询时输出对象细节
添加自定义方法
再次进入命令行
查询所有
条件查询
查询不存在的
主键查找
显示于问题有关的回答集合
现在还没有回答
创建回答
再次查询所有相关回答以及个数
对回答进行条件查询
删除指定回答
py manage.py createsuperuser
访问http://127.0.0.1:8000/admin/
使用管理员账号登录
编辑问题
【注意】
Question
模型中自动生成的DateTimeField
、字符字段 CharField
)会生成对应的 HTML 输入控件。每个类型的字段都知道它们该如何在管理页面里显示自己。DateTimeField
都有 JavaScript 写的快捷按钮。日期有转到今天(Today)的快捷按钮和一个弹出式日历界面。时间有设为现在(Now)的快捷按钮和一个列出常用时间的方便的弹出式列表。页面底部选项
更改文件后,服务器自动重新运行了
现在时间正确了