Django 编写第一个Django应用,第2部分

Django

官方文档

文章目录

    • Django
      • 5. 编写一个Django应用,第2部分
        • 5.1 数据库配置
          • 5.1.1 安装MySQL数据库API驱动程序
          • 5.1.2 修改settings.py文件
        • 5.2 设置时区(看文末 )
        • 5.3 INSTALLED_APPS 设置项
        • 5.4 创建一些表
        • 5.5 创建模型
        • 5.6 激活模型
        • 5.7 初试API
        • 5.8 介绍Django管理界面
          • 5.8.1 创建一个管理员账号
          • 5.8.2 启动服务器
          • 5.8.3 进入管理站点页面
          • 5.8.4 向管理页面中加入投票应用
          • 5.8.5 体验便捷的管理功能
        • 5.9 时区设置

5. 编写一个Django应用,第2部分

5.1 数据库配置

mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。

Django 编写第一个Django应用,第2部分_第1张图片

通常,这个配置文件使用 SQLite 作为默认数据库。如果开发者不熟悉数据库,或者只是想尝试下 Django,这是最简单的选择。Python 内置 SQLite,所以无需安装额外东西来使用它。

5.1.1 安装MySQL数据库API驱动程序
pip install mysqlclient

Django 编写第一个Django应用,第2部分_第2张图片

5.1.2 修改settings.py文件
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',
    }
}

5.2 设置时区(看文末 )

Django 编写第一个Django应用,第2部分_第3张图片

Windows系统设置不起作用,Django会使用本机的时间。

5.3 INSTALLED_APPS 设置项

包括了项目中启用的所有 Django 应用。

INSTALLED_APPS = [
    'django.contrib.admin', # 管理员站点
    'django.contrib.auth', # 认证授权系统
    'django.contrib.contenttypes', #内容类型框架
    'django.contrib.sessions', # 会话框架
    'django.contrib.messages', # 消息框架
    'django.contrib.staticfiles', # 管理静态文件的框架
]

5.4 创建一些表

python manage.py migrate

Django 编写第一个Django应用,第2部分_第4张图片

Django 编写第一个Django应用,第2部分_第5张图片

Django自动创建的表“们”

5.5 创建模型

数据库结构设计和附加的其它元数据。

在这个投票应用中,需要创建两个模型:问题 Question 和选项 ChoiceQuestion 模型包括问题描述和发布时间。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) # 设置默认值

5.6 激活模型

首先把 polls 应用安装到项目里。

Django 编写第一个Django应用,第2部分_第6张图片

运行命令

python manage.py makemigrations polls

Django 编写第一个Django应用,第2部分_第7张图片

通过运行 makemigrations 命令,Django 会检测对模型文件的修改,并且把修改的部分储存为一次迁移。

迁移是 Django 对于模型定义(也就是你的数据库结构)的变化的储存形式 - 它们其实也只是一些磁盘上的文件。

Django 编写第一个Django应用,第2部分_第8张图片

Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 —— migrate

首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate 命令接收一个迁移的名称,然后返回对应的 SQL

py manage.py sqlmigrate polls 0001

Django 编写第一个Django应用,第2部分_第9张图片

【注意】

  • 输出的内容和开发者使用的数据库有关,上面的输出示例笔者使用的是 MySQL。
  • 数据库的表名是由应用名(polls)和模型名的小写形式( questionchoice)连接而来。(可自定义)
  • 主键(IDs)会被自动创建。(可自定义)
  • 默认的,Django 会在外键字段名后追加字符串 "_id" 。(可自定义)
  • 外键关系由 FOREIGN KEY 生成。
  • 生成的 SQL 语句是为所用的数据库定制的,所以那些和数据库有关的字段类型,比如 auto_increment (MySQL)、 serial (PostgreSQL)和 integer primary key autoincrement (SQLite),Django 会自动处理。那些和引号相关的事情 - 例如,是使用单引号还是双引号 - 也一样会被自动处理。
  • 这个 sqlmigrate 命令并没有真正在你的数据库中的执行迁移 - 相反,它只是把命令输出到屏幕上,让你看看 Django 认为需要执行哪些 SQL 语句。

→ 真正创建

py manage.py migrate

Django 编写第一个Django应用,第2部分_第10张图片

Django 编写第一个Django应用,第2部分_第11张图片

Django 编写第一个Django应用,第2部分_第12张图片

这个 migrate 命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。

改变模型的三步

  1. 编辑 models.py 文件,改变模型。
  2. 运行 python manage.py makemigrations 为模型的改变生成迁移文件。
  3. 运行 python manage.py migrate 来应用数据库迁移。

5.7 初试API

进入交互式Python命令行

py manage.py shell

Django 编写第一个Django应用,第2部分_第13张图片

Django 编写第一个Django应用,第2部分_第14张图片

查询时输出对象细节

Django 编写第一个Django应用,第2部分_第15张图片

添加自定义方法

Django 编写第一个Django应用,第2部分_第16张图片

再次进入命令行

查询所有

Django 编写第一个Django应用,第2部分_第17张图片

条件查询

  • id为1

    在这里插入图片描述

  • 问题文本

    在这里插入图片描述

  • 自定义条件

    Django 编写第一个Django应用,第2部分_第18张图片

查询不存在的

Django 编写第一个Django应用,第2部分_第19张图片

主键查找

Django 编写第一个Django应用,第2部分_第20张图片

显示于问题有关的回答集合

Django 编写第一个Django应用,第2部分_第21张图片

现在还没有回答

创建回答

Django 编写第一个Django应用,第2部分_第22张图片

再次查询所有相关回答以及个数

Django 编写第一个Django应用,第2部分_第23张图片

对回答进行条件查询

在这里插入图片描述

删除指定回答

Django 编写第一个Django应用,第2部分_第24张图片

5.8 介绍Django管理界面

5.8.1 创建一个管理员账号
py manage.py createsuperuser

Django 编写第一个Django应用,第2部分_第25张图片

5.8.2 启动服务器

Django 编写第一个Django应用,第2部分_第26张图片

访问http://127.0.0.1:8000/admin/

Django 编写第一个Django应用,第2部分_第27张图片

5.8.3 进入管理站点页面

使用管理员账号登录

Django 编写第一个Django应用,第2部分_第28张图片

5.8.4 向管理页面中加入投票应用

Django 编写第一个Django应用,第2部分_第29张图片

Django 编写第一个Django应用,第2部分_第30张图片

5.8.5 体验便捷的管理功能

Django 编写第一个Django应用,第2部分_第31张图片

编辑问题

Django 编写第一个Django应用,第2部分_第32张图片

【注意】

  • 这个表单是从问题 Question 模型中自动生成的
  • 不同的字段类型(日期时间字段 DateTimeField 、字符字段 CharField)会生成对应的 HTML 输入控件。每个类型的字段都知道它们该如何在管理页面里显示自己。
  • 每个日期时间字段 DateTimeField 都有 JavaScript 写的快捷按钮。日期有转到今天(Today)的快捷按钮和一个弹出式日历界面。时间有设为现在(Now)的快捷按钮和一个列出常用时间的方便的弹出式列表。

页面底部选项

  • 保存(Save) - 保存改变,然后返回对象列表。
  • 保存并继续编辑(Save and continue editing) - 保存改变,然后重新载入当前对象的修改界面。
  • 保存并新增(Save and add another) - 保存改变,然后添加一个新的空对象并载入修改界面。
  • 删除(Delete) - 显示一个确认删除页面。

Django 编写第一个Django应用,第2部分_第33张图片

Django 编写第一个Django应用,第2部分_第34张图片

5.9 时区设置

Django 编写第一个Django应用,第2部分_第35张图片

更改文件后,服务器自动重新运行了

Django 编写第一个Django应用,第2部分_第36张图片

现在时间正确了

你可能感兴趣的:(Django,django,python,后端)