1、DEBUG 和 BASE_DIR参数

--DEBUG = True  # 表示调试的错误可以看到,一般项目上线之后要设置为False--BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 的讲解--__file__ :表示当前文件的绝对路径 os.path.abspath(__file__)D:\代码\python\python_django_heima_5_1\python_django_heima_5\settings.py--os.path.abspath(__file__) 表示 D:\代码\python\python_django_heima_5_1\python_django_heima_5\--os.path.dirname()  表示父文件夹,两个一起包裹起来就变成了 D:\代码\python\python_django_heima_5_1 即项目目录

2、静态文件

--根目录下创建static静态文件夹
--配置静态文件路径,--STATIC_URL = '/static/'--STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
--django通过 STATIC_URL 区分静态资源和动态资源,通过 STATIC_URL,django自动生成访问静态资源 http://ip:port + STATIC_URL + 文件名,去静态资源文件夹中进行匹配
--直接在项目启动之后使用:http://10.34.9.171:90232/static/1.jpg 即可访问到静态资源

3、apps配置相关

--app注册的时候--可以直接使用 子应用包名直接注册 'book'--也可以使用子应用中apps.py文件来进行注册'book.apps.BookConfig'--如下是apps.py中自动生成的代码from django.apps import AppConfigclass BookConfig(AppConfig):name = 'book'
--在apps.py中进行参数 verbose_name  配置,这个主要是后台一个小配置无关紧要--这种情况下必须使用 'book.apps.BookConfig' 否则不生效from django.apps import AppConfigclass BookConfig(AppConfig):name = 'book'verbose_name='后台相关'

4、模型的定义

--新建一个项目:--django-admin startproject python_django_heima_5_3--cd python_django_heima_5_3--django-admin startapp book--配置settings.py    --定义 models 类:1、ORM表  -->  类字段  -->  属性2、模型类需要继承自 models.Model3、模型类会为我们自动添加一个主键4、书籍类目前字段为:id name pub_date read_count comment_count is_delete5、models 字段名称不要使用 关键字 不要使用双下划线分割字符6、定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:属性=models.字段类型(选项)7、定义示例如下:from django.db import models# Create your models here."""id name pub_date read_count comment_count is_delete"""class BookInfo(models.Model):# 属性名 = 属性类型name = models.CharField(max_length=20, unique=True)# 日期pub_date = models.DateField(null=True)# 阅读数read_count = models.IntegerField(default=0)# 评论数comment_count = models.IntegerField(default=0)# 是否删除is_delete = models.BooleanField(default=False)class Meta:db_table = 'bookinfo'verbose_name = 'admin'def __str__(self):return self.name8、People类直接复制,做说明如下:# 准备人物列表信息的模型类class PeopleInfo(models.Model):GENDER_CHOICES = ((0, 'male'),(1, 'female'))name = models.CharField(max_length=20, verbose_name='名称')gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')description = models.CharField(max_length=200, null=True, verbose_name='描述信息')book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书')  # 外键is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')class Meta:db_table = 'peopleinfo'verbose_name = '人物信息'def __str__(self):return self.name9、模型的外键: 一般外键 和 主表几种关系 [1、一起删除  2、主表变化 外键表不变  3、]在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:[前三个非常重要]--CASCADE级联,删除主表数据时连通一起删除外键表中数据--PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据--SET_NULL设置为NULL,仅在该字段null=True允许为null时可用--SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用--SET()设置为特定值或者调用特定方法--DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常--字段类型说明:AutoField         自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性BooleanField     布尔字段,值为True或FalseNullBooleanField    支持Null、True、False三种值CharField           字符串,参数max_length表示最大字符个数TextField            大文本字段,一般超过4000个字符时使用IntegerField     整数DecimalField      十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数FloatField           浮点数DateField            日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误TimeField         时间,参数同DateFieldDateTimeField     日期时间,参数同DateFieldFileField          上传文件字段ImageField        继承于FileField,对上传的内容进行校验,确保是有效的图片--filed 的参数说明:--charfield     必须设置 max_length = 20--null           如果为True,表示允许为空,默认值是False--blank           如果为True,则该字段允许为空白,默认值是False--db_column        字段的名称,如果未指定,则使用属性的名称--db_index        若值为True, 则在表中会为此字段创建索引,默认值是False--default        默认,不同field default值不同--primary_key   若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用--unique     如果为True, 这个字段在表中必须有唯一值,默认值是False--修改表名:--一般默认就是 子应用名称_model类名称 组合成数据表名class 表(models.Model):字段1 = ***字段2 = ***字段3 = ***class Meta:# 新的表名定义db_table = '新的表名:db_name_01'

5、数据库引擎修改

--sqlite 一个嵌入式的小型数据库
--中型: mysql    sqlserver
--大型: oracle   db2--https://docs.djangoproject.com/en/3.1/  django文献查询网站--pip install PyMySQL  安装数据库驱动
--在工程总目录下__init_.py中添加语句如下:import pymysqlpymysql.install_as_MySQLdb()--在settings.py中配置数据库引擎:DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1',  # 数据库主机,ip可以随便换'PORT': 3306,  # 数据库端口'USER': 'root',  # 数据库用户名'PASSWORD': 'mysql',  # 数据库用户密码'NAME': 'book_01_44'  # 数据库名字,实现在数据库中创建出来}}--python manage.py makemigrations  生成迁移文件
--python manage.py migrate  同步到数据库中--打开mysql导入数据
insert into bookinfo(name, pub_date, read_count,comment_count, is_delete) values
('射雕英雄传', '1980-5-1', 12, 34, 0),
('天龙八部', '1986-7-24', 36, 40, 0),
('笑傲江湖', '1995-12-24', 20, 80, 0),
('雪山飞狐', '1987-11-11', 58, 24, 0);insert into peopleinfo(name, gender, book_id, description, is_delete)  values
('郭靖', 1, 1, '降龙十八掌', 0),
('黄蓉', 0, 1, '打狗棍法', 0),
('黄药师', 1, 1, '弹指神通', 0),
('欧阳锋', 1, 1, '蛤蟆功', 0),
('梅超风', 0, 1, '九阴白骨爪', 0),
('乔峰', 1, 2, '降龙十八掌', 0),
('段誉', 1, 2, '六脉神剑', 0),
('虚竹', 1, 2, '天山六阳掌', 0),
('王语嫣', 0, 2, '神仙姐姐', 0),
('令狐冲', 1, 3, '独孤九剑', 0),
('任盈盈', 0, 3, '弹琴', 0),
('岳不群', 1, 3, '华山剑法', 0),
('东方不败', 0, 3, '葵花宝典', 0),
('胡斐', 1, 4, '胡家刀法', 0),
('苗若兰', 0, 4, '黄衣', 0),
('程灵素', 0, 4, '医术', 0),
('袁紫衣', 0, 4, '六合拳', 0);

6、针对 django作为一个项目,单独的部分代码不能进行灵活的测试的问题,可以使用shell解决问题

--python manage.py shellfrom book.models import BookInfoBookInfo.objects.all()<QuerySet [<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: 笑傲江湖>, <BookInfo: 雪山飞狐>]>

7、增加数据

--方式1:这种方式一条一条增加不是很方便from book.models import BookInfobook = BookInfo(name = 'dhin',pub_date = '1010-02-01')book.save()--方式2:直接入库,create直接保存,不需要调用save()函数,但是这种方式在使用函数时不会提示有哪些字段BookInfo.objects.create(name='java',pub_date = '2020-1-16')

8、更新数据  和 mvt

--方式1:--book = BookInfo.objects.get(id=1)  # 查出某一个值--book.read_cout = 20--book.save()  # 不保存事务不会提交--方式2:直接更新 使用filter查找出数据同时可以一次更新多个字段BookInfo.objects.filter(id=1).update(read_count=2345,comment_count=9080)--mvt : 本质 就是接受前端请求,从数据库查出数据,渲染到模板上,将完全渲染好的前端文件打包一起发送给前端进行展示

9、删除

--方式1:先查询,在删除book = BookInfo.objects.get(id=5)book.delete()--方式2:直接删除BookInfo.objects.filter(id=1).delete()

02、django model 模型的使用 基本引擎配置[ 增 删 改]相关推荐

  1. 【django】数据库操作-增 删 改

    一.增加数据 增加数据有两种⽅法. 1)save 通过创建模型类对象,执⾏对象的save()⽅法保存到数据库中. f1=FilmInfo(fname='我爱你中国',pub_data='2021-10 ...

  2. django一对多 增 删 改 查

    实现一对多表查询功能 项目代码: models.py from django.db import models# Create your models here.class Classes(model ...

  3. Django基础核心技术之Model模型的介绍与设计

    Django基础核心技术之Model模型的介绍与设计 原创: Yunbo Shi Python Web与Django开发 2018-05-03 Django网络应用开发的5项基础核心技术包括模型(Mo ...

  4. django model

    本文一篇完全介绍django的最重要的model 6.django model 模型是数据唯一而且准确的信息来源.它包含正在储存的数据的重要字段和行为.一般来说,每一个模型都映射一个数据库表. 这个模 ...

  5. Python全栈工程师学习笔记 | Django的模型层

    Model模型 模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为. 通常,每个模型对应数据库中唯一的一张表. 每个模型都是django.db.models.Model的一个Py ...

  6. python datetime需要安装_Python全栈工程师学习笔记 | Django的模型层

    Model模型 模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为. 通常,每个模型对应数据库中唯一的一张表. 每个模型都是django.db.models.Model的一个Py ...

  7. django中model模型

    python manage.py dumpdata blog       # 导出blog数据 python manage.py loaddata blog_dump.json   # 导入数据  m ...

  8. Django中的Model模型

    Model模型 模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为. 通常,每个模型对应数据库中唯一的一张表. 每个模型都是django.db.models.Model的一个Py ...

  9. django 2 -----模型

    二.模型 模型使用步骤: 配置数据库 models.py定义模型类 激活模型 使用模型 Django默认使用的是sqlite,但在生产环境中一般会用mysql.postgrsql.oracle等关系型 ...

最新文章

  1. linux文件IO与内存映射:分散/聚集IO技术(scatter-gather)
  2. python 同花顺thstrader_GitHub - yanjlee/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...
  3. 浅析企业网站如何选择合适的网站空间
  4. Android动态方式破解apk进阶篇(IDA调试so源码)
  5. IIS7.5 HTTP 错误 500.19 - Internal Server Error 问题的解决方案
  6. 如何走近深度学习人脸识别?你需要这篇超长综述 | 附开源代码
  7. 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors
  8. Yarn 和 Npm 命令行切换 摘录
  9. 编程之美 - 哪个题目最美?
  10. 叠置分析(涉及结果属性和输入图层属性的关系)
  11. android 控件xpath软件_Appium-关于appium的原生控件的 xpath 定位问题及常用方法
  12. POJ3250 Bad Hair Day【单调递减队列+堆栈】
  13. 如何优雅的使用全球最大同性社交网站
  14. 三相全桥整流电路_什么是三相全波整流电路,三相全波整流电路的工作原理是什么,三相全波整流电路电路图...
  15. IP地址中的网络地址和主机地址分别是什么意思?
  16. nimble源码学习——广播流程源码分析1
  17. U盘被识别为其他设备(显示U盘图标但是不显示盘符)的解决办法
  18. MATLAB中常见数字信号处理相关函数汇总
  19. 校招产品经理面经篇四
  20. 使用免费的CDN平台jsDelivr搭建个人cdn资源网盘

热门文章

  1. c语言结构体定义蚂蚁,C语言结构体(struct)常见使用方法
  2. 系统集成项目管理工程师考试成绩出来了!
  3. Kubernetes部署(六):k8s项目交付----(3)集群监控
  4. 计算机网络基础(三):默认网关
  5. 深度学习网络评价指标——IoU、Precision、Recall,mIoU、mPA、Accuracy和f-score的定义,区别和联系
  6. lasso回归操作步骤
  7. meteor Blaze
  8. unity 中2d游戏游戏角色与场景物体层级关系问题解决
  9. java二分法查找_java实现二分法查找
  10. win10 没有有效的ip配置