tic"),
]
STATICFILES_STORAGE = "common.storage.ForgivingManifestStaticFilesStorage"
说明:(1)指定访问静态文件时是需要通过/static/xxx或http://127.0.0.1:80/static/xxx.
[xxx表示具体的静态资源位置];
(2)STATICFILES_DIRS ---保存的是静态文件在服务器端的存储位置。
12.Django中的应用
应用在Django项目中是一个独立的业务模块,可以包含自己的路由、视图、模板、模型。
(1)创建应用
step 1 用manage.py 中的子命令startapp 创建应用文件夹
python manage.py startapp XXXX
step 2 在settings.py 的INSTALLED_APPS = ()列表中配置安装此应用。
13.分布式路由
Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件可以做请求的分发(分布式请求处理)。具体的请求可以由各自的应用来进行处理。
配置分布式路由
step 1 --主路由中调用include函数
导入的模块
from django.urls import include, path
语法:include('app名字.url 模块名')
作用:用于将当前路由转到各个应用的路由配置文件的urlpatterns进行分布式处理。
例如 archery项目中的分布式配置。
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include(("sql_api.urls", "sql_api"), namespace="sql_api")),
path("", include(("sql.urls", "sql"), namespace="sql")),
]
14 应用下的模板
应用内部可以配置模板目录
(1)应用下手动创建templates文件夹;
(2)settings.py中 开启 应用模板功能,TEMPLATES 配置项中的"APP_DIRS": True 即可。
应用下templates 和外层templates都存在是,django的查找模板规则:
(1)优先查找外层templates目录下的模板;
(2)按# Application definition 中 INSTALLED_APPS 配置下的 应用顺序,逐层查找。
15 什么是模型
模型是一个Python类,它是由django.db.models.Model派生出的子类。
一个模型类代表数据库中的一张数据表。
模型类中每一个类属性都代表数据库中的一个字段。
模型是数据交互的接口,是表示和操作数据库的方法和方式。
16.ORM框架
定义: ORM(Object Relational Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库。
作用:
(1)建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
(2)根据设计的模型类生成数据库中的表。
(3)通过简单的配置就可以进行数据库的部署或DB类型的切换。
有点:
(1)只需要面向对象编程,不需要面向数据库编写代码。
对数据库的操作都转化成对类属性和方法的操作;不用编写各种数据库的SQL语句。
(2)实现了数据库模型与数据库的解耦,屏蔽了不同数据库操作上的差异。
不再关注于用的是MySQL、Oracle。。。等数据库的内部细节;通过简单的配置就可以轻松更换数据库,而不需要修改代码。
缺点:
对于复杂业务,使用成本较高;
根据对象的操作转换成SQL语句,根据查询的结果转换成对象,在映射过程中有性能损失。
17.模型--数据库迁移
迁移是Django同步您对数据库所做的更改(添加字段、删除模型等)到您的数据库模型的方式。
(1)生成迁移文件,执行 python manage.py makemigrations ,将应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中。
(2)执行迁移脚本程序,--执行 python manage.py migrate ,执行迁移程序实现迁移。将每个应用下的makemigrations目录中的中间文件同步回数据库。
18. 模型---字段类型
常见字段类型相关说明补充如下:
字段类型 |
编程语言 |
数据库语言 |
备注 |
BooleanField() |
使用True或False来表示值。 |
tinyint(1) |
在数据库中,使用1或0来表示具体的值。 |
NullBooleanField() |
|
|
可以为空的布尔值。 |
CharField(Field) |
|
varchar() |
必须提供max_length参数, max_length表示字符长度 |
DateField() |
表示日期 |
date |
参数: auto_now:每次保存对象时,自动设置该字段为当前时间(取值:True/False); auto_now_add:当对象第一次被创建时自动设置当前时间(取值:True/False); default:设置当前时间(取值:字符串格式时间,如:'2019-10-15'); 以上三个参数只能多选一。 |
DateTimeField() |
表示日期和时间 |
datetime(6) |
日期 + 时间格式 YYYY - MM - DD HH:MM[:ss[.uuuuuu]][TZ]。 参数同DateField. |
DecimalField() |
使用小数表示该列的值 |
使用小数 decimal(x,y) |
参数: max_digits,小数总长度【位数总数】,包括小数点后的位数,该值必须大于等于decimal_places; decimal_places,小数位长度【小数点后的数字数量】。 |
FloatField() |
浮点型 |
double |
编程语言中和数据库中都使用小数表示值。 |
EmailField() |
字符串类型 |
varchar |
Django Admin以及ModelForm中提供验证机制。 编程语言和数据库中使用字符串。 |
IPAddressField() |
字符串类型 |
|
Django Admin以及ModelForm中提供验证 IPV4 机制 |
GenericIPAddressField() |
字符串类型 |
|
Django Admin以及ModelForm中提供验证 Ipv4和Ipv6。 参数: protocol,用于指定Ipv4或Ipv6, 'both' , "ipv4" , "ipv6"; unpack_ipv4, 如果指定为 True ,则输入::ffff: 192.0 . 2.1 时候,可解析为
|