Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

Vue3 Django4全新技术实战全栈项目(完结)

download:https://www.sisuoit.com/4231.html

scrypt暗码哈希上一年(2021年)十二月,django发布了4.0版别,他更新了一些新的特性,虽然看起来与之前变化不大,但运用新的django能够避免一些老版别的问题(这些问题或许会是导致你弃坑django的原因),那现在让我们来聊聊都更新了些什么吧。

兼容性

现在django4.0支撑python3.8,3.9,3.10。

Django 4.0 支撑 PostgreSQL 10 及更高版别。抛弃对 PostgreSQL 9.6 的支撑

Django 4.0 正式支撑 Oracle 19c。抛弃对 Oracle 12.2 和 18c 的支撑

django对数据库的兼容性决议了你要更新这个结构需不需求进行数据库迁移,以便预算成本,一般来说迁移数据的成本是比较高的。

django支撑最新的几个python版别,也就意味着能够运用这些版别的新语法和新功用(比方3.10的match句子)更好用的异步优化和类型查看。

新特性

Python 标准库zoneinfo现在是 Django 中的默认时区完成。

功用仅有约束——UniqueConstraint()的*expressions 位置参数答应在表达式和数据库函数上创建功用仅有约束。

scrypt暗码哈希——新的scrypt 暗码散列器比 PBKDF2 更安全,推荐运用。可是,它不是默认设置,由于它需求 OpenSSL 1.1 和更多内存。

Redis 缓存后端——新的django.core.cache.backends.redis.RedisCache缓存后端为运用 Redis 进行缓存提供了内置支撑。需求 redis-py 3.0.0 或更高版别。有关更多详细信息,请参阅Django 中运用 Redis 进行缓存的文档。

新增QuerySet.contains(obj)办法,用于判定查询集中是否包含给定的目标;

LoginView增加了next_page属性;

{% ifequal %}和 {% ifnotequal %} 标签被删除;

request.is_ajax()办法被删除。

小结

作为一个闻名的python web结构,django的更新是比较缓和的,没有呈现比较大型的变化,这让想要从Django3升级到Django4的开发者更易于接受。但新结构的呈现意味着旧的技能的逐步过期

详解模型类M(ORM

ORM结构

O是object,也就类目标的意思,R是relation,翻译成中文是联系,也便是联系数据库中数据表的意思,M是mapping,是映射的意思。在ORM结构中,它帮咱们把类和数据表进行了一个映射,能够让咱们经过类和类目标就能操作它所对应的表格中的数据。ORM结构还有一个功用,它能够依据咱们规划的类主动帮咱们生成数据库中的表格,省去了咱们自己建表的进程。
django中内嵌了ORM结构,不需求直接面向数据库编程,而是界说模型类,经过模型类和目标完结数据表的增修正查操作

在MVC结构中的Model模块中都包含ORM,关于开发人员首要带来了如下优点:

  • 完结了数据模型与数据库的解耦,经过简略的配置就能够轻松更换数据库,而不需求修正代码。
  • 只需求面向目标编程,不需求面向数据库编写代码。
  • 在MVC中Model中界说的类,经过ORM与联系型数据库中的表对应,目标的特点表现目标间的联系,这种联系也被映射到数据表中。
    Django结构中ORM示意图如下:

    Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

O是object,也就类目标的意思,R是relation,翻译成中文是联系,也便是联系数据库中数据表的意思,M是mapping,是映射的意思。在ORM结构中,它帮咱们把类和数据表进行了一个映射,能够让咱们经过类和类目标就能操作它所对应的表格中的数据。ORM结构还有一个功用,它能够依据咱们规划的类主动帮咱们生成数据库中的表格,省去了咱们自己建表的进程。
django中内嵌了ORM结构,不需求直接面向数据库编程,而是界说模型类,经过模型类和目标完结数据表的增修正查操作

在MVC结构中的Model模块中都包含ORM,关于开发人员首要带来了如下优点:

  • 完结了数据模型与数据库的解耦,经过简略的配置就能够轻松更换数据库,而不需求修正代码。
  • 只需求面向目标编程,不需求面向数据库编写代码。
  • 在MVC中Model中界说的类,经过ORM与联系型数据库中的表对应,目标的特点表现目标间的联系,这种联系也被映射到数据表中。
    Django结构中ORM示意图如下:

    Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

界说特点

Django依据特点的类型确认以下信息:

  • 当时选择的数据库支持字段的类型
  • 烘托办理表单时运用的默许html控件
  • 在办理站点最低限度的验证

django会为表创立主动增长的主键列,每个模型只能有一个主键列,假如运用选项设置某特点为主键列后django不会再创立主动增长的主键列。

Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

命令行方式:

Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)
Vue3+Django4全新技术实战全栈项目(完结)-欲把西湖比西子(vue3.0实战项目)

默许创立的主键列特点为id,能够运用pk替代,pk全拼为primary key。pk是主键的别号,若主键名为id2,则pk是id2的别号。
特点命名限制:

  • 不能是python的保留关键字。
  • 不答应运用连续的下划线,这是由django的查询方式决定的,以后会详细讲解查询。
  • 界说特点时需求指定字段类型,经过字段类型的参数指定选项,语法如下:

特点=models.字段类型(选项)

字段类型

运用时需求引入django.db.models包,字段类型如下:

  • AutoField: 主动增长的IntegerField, 通常不必指定,不指守时Django会主动创立特点名为id的主动增长特点。
  • BooleanField: 布尔字段,值为True或False。
  • NullBooleanField: 支持Null、True、 False三种值。
  • CharField(max_ length=字符长度):字符串。参数max length表明最大字符个数。
  • TextField: 大文本字段,一般超越4000个字符时运用。
  • IntegerField: 整数。
  • DecimalField(max _digits=None, decimal _places=None):十进制浮点数。参数max _digits表明总位数。参数decimal _places表明小数位数。
  • FloatField: 浮点数。
  • DateField[auto_ now= False, auto_ now_ _add=Falsel]): 日期。
    • 1.参数auto_ now表明每次保存目标时,主动设置该字段为当时时刻,用于"最后一 次修正"的时刻戳,它总是运用当时日期,默以为false。
      -2.参数auto
      now_ _add表明当目标第一 -次被创立时主动设置当时时刻,于创立的时刻戳,它总是运用当时日期,默以为false。
    • 参数auto_ now_ add和auto_ now是彼此排斥的,组合将会产生错误。
  • TimeField: 时刻,参数同DateField.
  • DateTimeField: 日期时刻,参数同DateField。
  • FileField:. 上传文件字段。
  • lmageField: 继承于FileField, 对上传的内容进行校验,保证是有效的图片

选项

经过选项完结对字段的束缚,选项如下:

  • null: 假如为True,示答应为空,默许值是False。
  • blank: 假如为True,则该字段答应为空白,默许值是False。
    • 比照: null是数据库领域的概念,blank是表 单验证领域的。
  • db_ _column: 字段的称号,假如未指定,则运用特点的称号。
  • db_ _index: 若值为True,则在表中会为此字段创立索引,默许值是False。
    • 索引的作用:提升数据库查找速度!
  • default: 默许值。
  • primary_ key:若为True,则该字段会成为模型的主键字段,默许值是False,-般作为AutoField的选项运用。
  • unique: 假如为True,这个字段在表中必须有唯一值,默许值是False。

归纳演示
修正booktest/models.py中的模型类,代码如下:

from django.db import models # Create your models here. #界说图书模型类BookInfo class BookInfo(models.Model): btitle = models.CharField(max_length=20) # 图书称号 # btitle = models.CharField(max_length=20,db_column='title') #经过db_column指定btitle对应表格中字段的姓名为title ## 主动保存当时修正“最后一次修正”的日期 bpub_date = models.DateField(auto_now=True) ##第一次被创立的时刻 # bpub_date = models.DateField(auto_now_add=True) # 阅读数 bread = models.IntegerField(default=0) # 评论量 bcomment = models.IntegerField(default=0) # 逻辑删去 isDelete = models.BooleanField(default=False) #界说英豪模型类HeroInfo class HeroInfo(models.Model): #英豪称号 hname = models.CharField(max_length=20) # 默许是男性 hgender = models.BooleanField(default=True) # 逻辑删去 isDelete = models.BooleanField(default=False) # hcomment = models.CharField(max_length=200)#英豪描述信息 hcomment = models.CharField(max_length=200,null=True,blank=False) # hcomment对应的数据库中的字段是能够为空的,可是经过后台办理添加的时分不能为空。 #英豪与图书表的联系为一对多,所以特点界说在英豪模型类中 hbook = models.ForeignKey('BookInfo')

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。