前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >走进 model [三]

走进 model [三]

作者头像
周辰晨
发布2020-01-20 16:05:09
9530
发布2020-01-20 16:05:09
举报
文章被收录于专栏:软件测试架构师俱乐部

前言

本篇将介绍Django如何建立数据库,如何创造你的第一个模型,还会接触到Django自带的后台管理系统,

数据库配置

数据库连接

打开 demo_proj/settings.py,Django 项目的配置都在此。 Python 内置了 SQLite,你无需安装就可以使用它,但当你开始一个真正的项目时,你可能更倾向使用一个更具扩展性的数据库,例如 MySQL, 在配置文件中使用 SQLite 作为默认数据库,我们的演示也用SQLite。以下就是数据库的配置项:

  • ENGINE 数据库引擎,看你是选择哪种数据库,是SQLite,或者 是MySQL,还是其他,可选值有
  • name 数据库名称,如果是 SQLite,数据库将是你电脑上的一个文件,那么, NAME 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。
创建数据库

Django是通过 migrate命令来检查 settings.py 文件中的 INSTALLED_APP 配置项,为其中的每个应用创建数据表的。 先来关注下 INSTALLED_APP配置项,我们在Django项目中所有的应用对会包括在此(上篇文章创建的 demo_app也要手动加到这配置项里)。通常 INSTALLED_APP会默认包括以下自带的应用

这些应用被默认启用是为了给项目提供方便,比如 django.contrib.admin会帮你建立个管理后台, django.contrib.auth会极大方便登录验证,等等,后续我们会陆续介绍到。这些应用都需要数据表,比如 django.contrib.admin是后台管理,那么就必须要有后台管理员。那么就要求数据库中必须有类似user表的来维护管理员数据。 Django 通过 migrate命令 根据 不同的app 来创建不同的表,执行命令

当看到 如下反馈就表示执行成功:

我们可以查看数据库,会发现多了许多的表,如图所示:

创建模型

模型是真实数据的简单明确的描述,它包含了存储的数据所必要的字段和行为。每一个模型映射一个数据库表,一般都写在 models.py中。 打开 demo_app中的models.py 文件,修改代码如下:

在Cat 类 我们定义了 __str__()方法,这个方法用来有什么作用,大家可以自己找找答案。

那我们如何把我们刚建的Cat类映射到数据表中呢?执行如下命令即可:

我们查看数据库,会发现了多了Cat这个表

这样,我们新建的模型就和数据库中的表建立起了映射关系了。那我们如何操作模型呢,也就是我们如何实现对数据库进行增删改查操作呢?Django 为我们提供了各种API,我们进入交互式Python命令行来体验下:

至此,Django如何配置数据库,如何创建model,如何把model映射到数据库中以及对model的操作我们都以熟悉了下,我们将在后面的课程中的更加深入的介绍model的一些用法。

Django 管理后台

Django 为我们提供了功能强大的后台。在后台中,我们可以利用Django自带的功能对定义的对象进行添加,修改,和删除。

创建一个管理员账号

要登录到后台,首先必须有管理员账户,运行如下命令:

启动我们的工程,在浏览器中输入 http://127.0.0.1:8000/admin/,系统会跳转到后台系统的登录页面:

输入我们刚才建立的管理员账号和密码,我们会进入到后台管理系统的索引页

我们刚才建立的Cat类在哪里呢?别急,要想在后台看到这个类还得告诉后台系统,Cat类需要被管理,打开 demo_app/admin.py 文件:

刷新页面,就可以看到我们定义的Cat类了:

点击Cat,系统就会跳转的Cat 对象的列表页面,我们刚才演示的操作API 新建的 Cat 对象也在此

点击 miaomiao 就进入到编辑页面

编辑和删除功能都能实现。

model字段类型

在介绍了上面的内容之后,我再来补充介绍下常用的Djano字段类型。

  • models.AutoField :默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
  • models.NullBooleanField :允许 NULL 作为其中一个选项。推荐使用这个字段而不要用 BooleanField 加 null=True 选项。admin 用一个选择框, <select> (三个可选择的值:“Unknown”, “Yes” 和 “No” ) 来表示这种字段数据。
  • models.Decimal:必须指定整数位max_digits和小数位decimal_places
  • models.DateField:对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。同(models.DateTimeField)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师影响力 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 数据库配置
    • 数据库连接
      • 创建数据库
      • 创建模型
      • Django 管理后台
        • 创建一个管理员账号
        • model字段类型
        相关产品与服务
        云数据库 MySQL
        腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档