Django搭建图书管理系统03:编写博客文章的Model模型

这篇具有很好参考价值的文章主要介绍了Django搭建图书管理系统03:编写博客文章的Model模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Django搭建图书管理系统03:编写博客文章的Model模型,Django图书管理,django,数据库,sqlite,mysql

Django 框架主要关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。

它们各自的职责如下:

层次 职责
模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即业务逻辑层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即表现层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。

简单来说就是Model存取数据,View决定需要调取哪些数据,而Template则负责将调取出的数据以合理的方式展现出来。

数据库与模型

数据库是存储电子文件的场所,储存独立的数据集合。一个数据库由多个数据表构成。

啥意思?举个栗子,三年级二班中同学们的花名册就是数据表。有的花名册记录每位同学的考试成绩、有的记录身高体重、还有的记录兴趣爱好…所有的这些花名册都放在老师的柜子里,这个柜子就是**“数据库”**了。

默认情况下,数据库就是db.sqlite3这个文件了。

操作数据库使用的是复杂的SQL语句,它是完全不同于Python的另一种语言,这对新手来说无疑是困难的。

幸运的是,在 Django 里写Web应用并不需要你直接去操作数据库,而是定义好模型(用Python语法就可以了!),模型中包含了操作数据库所必要的命令。也就是说你只需要定义数据模型,其它的底层代码都不用关心,它们会自动从模型生成。

其实它有专门的术语,叫对象关系映射Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换。

编写Model.py

如前面所讲,Django中通过模型(Model)映射到数据库,处理与数据相关的事务。

打开book/models.py文件,输入如下代码:

from django.db import models

# 图书信息数据模型
class Book(models.Model):
    barcode = models.CharField(max_length=20, default='', primary_key=True, verbose_name='图书条形码')
    bookName = models.CharField(max_length=20, default='', verbose_name='图书名称')
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='图书价格')
    count = models.IntegerField(default=0, verbose_name='库存')
    publishDate = models.CharField(max_length=20, default='', verbose_name='出版日期')
    publish = models.CharField(max_length=20, default='', verbose_name='出版社')
    # bookPhoto = models.ImageField(upload_to='img', max_length='100'[错误修正], verbose_name='图书图片')
    bookPhoto = models.ImageField(upload_to='img', max_length=100, verbose_name='图书图片')
    bookDesc = models.TextField(max_length=8000, verbose_name='图书简介')
    bookUpdated = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 't_Book'
        verbose_name = '图书信息'
        verbose_name_plural = verbose_name

Book类定义了一本书的信息:图书名称、图书价格、出版日期、创建出版社、图书简介等。

我们还可以额外再定义一些内容,规范Book中数据的行为:

# book/models.py

...

class Book(models.Model):
    ...

    # 内部类 class Meta 用于给 model 定义元数据
    class Meta:
        # 数据表名称
        db_table = 't_Book'
        verbose_name = '图书信息'
        verbose_name_plural = verbose_name
        # ordering 指定模型返回的数据的排列顺序
        # '-bookUpdated' 表明数据应该以倒序排列
        ordering = ('-bookUpdated',)

    # 函数 __str__ 定义当调用对象的 str() 方法时的返回值内容
    def __str__(self):
        #  将图书名称返回
        return self.bookName
  • 内部类Meta中的ordering定义了数据的排列方式。-bookUpdated表示将以创建时间的倒序排列,保证了最新的文章总是在网页的最上方。注意ordering是元组,括号中只含一个元素时不要忘记末尾的逗号。
  • __str__方法定义了需要表示数据时应该显示的名称。给模型增加 __str__方法是很重要的,它最常见的就是在Django管理后台中做为对象的显示值。因此应该总是返回一个友好易读的字符串。

恭喜你,你已经完成了博客网站最核心的数据模型的大部分内容。

代码不到20行,是不是完全没啥感觉。后面会慢慢体会Django的强大。

视图、模板马上就会讲到。

数据迁移(Migrations)

编写好了Model后,接下来就需要进行数据迁移。迁移是Django对模型所做的更改传递到数据库中的方式。

Django中MySQL配置

在项目的 settings.py 文件中配置 MySQL 数据库连接。

# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_username',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Django搭建图书管理系统03:编写博客文章的Model模型,Django图书管理,django,数据库,sqlite,mysql

注意,每当对数据库进行了更改(添加、修改、删除等)操作,都需要进行数据迁移。

Django的迁移代码是由模型文件自动生成的,它本质上只是个历史记录,Django可以用它来进行数据库的滚动更新,通过这种方式使其能够和当前的模型匹配。

在PyCharm的终端,输入python manage.py makemigrations,对模型的更改创建新的迁移表:

(venv) PS E:\djangopj\library> python manage.py makemigrations
Migrations for 'book':
  book\migrations\0001_initial.py
    - Create model Book
(venv) PS E:\djangopj\library> 

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

然后输入python manage.py migrate应用迁移到数据库中

(venv) PS E:\djangopj\library> python manage.py migrate                                           
Operations to perform:
  Apply all migrations: admin, auth, book, contenttypes, sessions
Running migrations:                                              
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying book.0001_initial... OK
  Applying sessions.0001_initial... OK
(venv) PS E:\djangopj\library> 

Navicat查看表格创建成功。
Django搭建图书管理系统03:编写博客文章的Model模型,Django图书管理,django,数据库,sqlite,mysql

migrate 命令选中所有还没有执行过的迁移并应用在数据库上,也就是将模型的更改同步到数据库结构上。迁移是非常强大的功能,它能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表。它专注于使数据库平滑升级而不会丢失数据。

每当你修改了models.py文件,都需要用makemigrationsmigrate这两条指令迁移数据。

在迁移之后,Model的编写就算完成了。

总结

本章初步了解了Django的MTV模式,编写了博客文章的Model模型Book,并将其迁移到了数据库中。

下一步就向View进军,学习如何调取模型中的数据。文章来源地址https://www.toymoban.com/news/detail-528110.html

到了这里,关于Django搭建图书管理系统03:编写博客文章的Model模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Django的博客管理系统

    【error】Database returned an invalid datetime value. Are time zone definitions for your database inst 修改: 参考:https://codeleading.com/article/78832425719/ 修改settings.py中时间信息的配置:

    2024年02月10日
    浏览(30)
  • Django图书商城系统实战开发-实现订单管理

    在本教程中,我们将继续基于Django框架开发图书商城系统,这次的重点是实现订单管理功能。订单管理是一个电子商务系统中非常重要的部分,它涉及到用户下单、支付、发货以及订单状态的管理等方面。通过学习本教程,您将了解如何使用Django框架来构建强大的订单管理系

    2024年02月12日
    浏览(43)
  • Django图书商城系统实战开发-实现商品管理

    在本教程中,我们将使用Django框架来实现一个简单的图书商城系统,并重点讨论如何实现商品管理功能。此外,我们还将介绍如何使用Markdown格式来写博客,并将其集成到我们的图书商城系统中。 Django是一个强大的Python Web框架,被广泛应用于开发各种类型的Web应用程序,包括

    2024年02月12日
    浏览(36)
  • 基于Django图书管理系统 毕业设计源码64946

    赠送源码-毕业设计:django图书管理系统 https://www.bilibili.com/video/BV1Dw411J7Uf/?vd_source=72970c26ba7734ebd1a34aa537ef5301 Django图书管理系统 摘  要 大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为

    2024年01月23日
    浏览(52)
  • Vue_Django 登录注册+图书管理系统

    点击查看代码 点击查看代码 点击查看代码 点击查看代码 点击查看代码

    2024年02月08日
    浏览(30)
  • python+django在线借阅图书管理系统vue

    本论文是以构建图书借阅为目标,使用  django框架制作,由系统前台、读者和管理员三大部分组成。着重论述了系统设计分析,系统的实现(读者注册模块,读者登录,读者浏览图书模块,图书借阅模块,图书归还模块,管理员登录等)以及后台数据库管理。从网站设计到具

    2024年02月07日
    浏览(37)
  • 图书推荐管理系统Python,基于Django和协同过滤算法等实现

    图书推荐系统 / 图书管理系统,以Python作为开发语言,基于Django实现,使用协同过滤算法实现对登录用户的图书推荐。 视频+代码:https://www.yuque.com/ziwu/yygu3z/gq555ph49m9fvrze Django是一个强大而灵活的Python Web框架,它为开发人员提供了一种高效构建Web应用程序的方式。Django的设计

    2024年02月12日
    浏览(42)
  • Python+Django+MySQL的图书馆管理系统【附源码,运行简单】

    自己做的项目,禁止转载,基于Python+Django+MySQL的图书馆管理系统,带用户登录、注册,基本的出版社、作者、图书信息的增删改查功能,还有分页功能,用Pycharm导入,安装依赖包,配置好数据库就可以正常运行了,里面的代码都含有注释,结构简单,清晰易懂,看一下就会

    2024年01月17日
    浏览(41)
  • 图书管理系统的搭建

    流程图 页面跳转: 代码整体布局: 导入框架和包: 实现效果: 在innodb存储引擎下,会到自增断层,如下(pid=4): 不适用拼接,正常插入: 代码部分: 创建数据库: 创建表: BaseDAO: Books: IBooksDAO: BooksDAOImpl: IBooksService: BooksServiceImpl: bookList.jsp: add.jsp: update.jsp: Bo

    2024年02月09日
    浏览(42)
  • django的简易的图书管理系统jsp书店进销存源代码MySQL

    本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 django的简易的图书管理系统 系统有1权限:管理员 用所技术 python3.10 django mysql5.6 注册登录和书籍信息的增删

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包