【Django】静态文件、应用与分布式路由、模型层与ORM介绍、ORM基础字段与操作

一、静态文件

图片、视频、css、js等文件都叫静态文件

  1. 配置静态文件的访问路径,STATIC_URL = '/static/'。若url中存在/static/,默认走静态文件路径,不需要视图函数处理。
  2. 配置静态文件的存储路径,STATICFILES_DIRS = [ BASE_DIR / "static", '/var/www/static/', ]

动态文件的加载:

	
<img src="/static/image/girl.jpg" width="300px" height="400px">


{% load static %}
<img src="{% static 'image/girl.jpg' %}" width="300px" height="400px">

二、Django应用及分布式路由

1、Django应用

是Django项目中的一个独立的业务模块,包含属于自己的路由、视图、模板、模型。
【Django】静态文件、应用与分布式路由、模型层与ORM介绍、ORM基础字段与操作_第1张图片

  1. 创建应用 python manage.py startapp music
  2. INSTALL_APPS列表中配置安装此应用INSTALLED_APPS = ['xxx','music']

当应用创建好后,每个应用都是一个小MTV。

2、分布式路由配置方法

【Django】静态文件、应用与分布式路由、模型层与ORM介绍、ORM基础字段与操作_第2张图片

(1)主路由中调用include

语法:include('app名字.url模块名')
作用:将当前路由转到各个应用的路由配置文件的utlpatterns进行分布式处理

from django.urls import path,include
from . import views

urlpatterns = [
	path('music/',include('music.urls'))
]

(2)配置应用下的urls.py

手动创建urls.py,内容结构同主路由完全一样

from django.urls import path
from . import views 
urlpatterns=[
	# http://127.0.0.1:8000/music/index
	path('index',views.index_view)
]

3、应用下的模板

  1. 手动创建templates文件夹
  2. settings中开启TEMPLATE配置项中的'APP_DIRS':True

注:若外层(主文件)有同名模板,django优先选择外层的;
注:若同层(应用)有同名模板,按注册顺序逐层查找。(解决方式如下图)
在这里插入图片描述

三、模型层与ORM介绍

1、模型层配置

  1. 安装mysqlclient模块包
  2. 在mysql中创建项目同名数据库,编码方式为utf8。
  3. settings配置DATABASES中的ENGINE更改为django.db.backends.mysql
  4. settings配置DATABASES中的NAME更改为数据库名,即项目名
  5. 手动添加settings配置DATABASES中的USER、PASSWORD、HOST、PORT

2、ORM框架

ORM(Object Relational Mapping)即对象关系映射,它允许你使用类和对象对数据库进行操作,而不用使用SQL语句。
【Django】静态文件、应用与分布式路由、模型层与ORM介绍、ORM基础字段与操作_第3张图片

3、模型类的创建:

1、创建并注册应用
2、在应用文件夹下的models.py中编写模型类代码

from django.db import models
class 模型类名(models.Model):
	字段名 = models.字段类型(字段选项)
from django.db import models

# Create your models here.
class Book(models.Model):
    title = models.CharField('书名',max_length=50,default='')
    price = models.DecimalField('价格',max_digits=7,decimal_places=2)

3、数据库的迁移
迁移是Django同步对模型所做的**更改到数据库(增加字段、删除模型等)**模式的方式。

Django第一次配置 MySQL时,报错django.core.exceptions.ImproperlyConfigured:
Error loading MySQLdb module. Did you install mysqlclient?
http://t.zoukankan.com/jiaoyang77-p-9333424.html
https://www.cnblogs.com/jiaoyang77/p/9333424.html

  1. 生成迁移文件,python manage.py makemigrations 将应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中。
  2. 执行迁移脚本程序,python manage.py migrate 执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库

运行结束后,mysql会在同名数据库中生成一个“应用名_类名”的数据表,并自动生成一个id主键。

四、ORM基础字段

1、字段类型

数据库类型 字段类型 备注
tinyint(1) BooleanField() 1/0(True/False)
varchar CharField() 必须指定max_length参数值
date DateField() 参数auto_now=True(保存对象时的时间)、auto_now_add=True(第一次创建时的时间)、default=‘2019-6-1’(默认时间)三选一
datetime DateTimeField() 更精确的时间,参数同上
double FloatField() 小数
decimal(x,y) DecimalField() 参数max_digits(位数总数,包括小数点后的位数)和decimal_places(小数点后的位数)
varchar EmailField() 专门存储邮箱的类型,会自动检查格式
int IntegerField() 整数
varchar ImageField() 图片路径
longtext TextField() 不定长的字符数据
int IntegerField() 整数

2、字段选项

参数名 解析
primary_key 如果设置为True,数据表不会创建id字段
blank 主要控制管理后台使用,如果设置为True,字段可以为空;设置为False,字段必须填写
null 如果设置为True,表示该列值允许为空,与mysql的null同义
default 设置默认值
db_index 如果设置为True,表示为该列增加索引
unique 如果设置为True,表示该字段在数据库中的值必须是唯一的
db_column 指定列的名称,如果不指定则采用属性名作为列名
verbose_name 设置此字段在admin界面上的显示名称

3、内部Meta类:给模型赋予属性

from django.db import models
class Book(models.Model):
	title = models.CharField('书名',max_length=50,default='')
	class Meta:
		db_table = 'book' # 可改变当前模型类对应的表名,以前的名是"应用名_类名"

五、ORM基础操作

每个继承自models.Model的模型类都会有一个objects对象被继承下来,这个对象叫管理器对象,即
【Django】静态文件、应用与分布式路由、模型层与ORM介绍、ORM基础字段与操作_第4张图片
创建数据方案1:
直接用objects创建,返回创建好的实体对象,但不成功会报错。

MyModel.objects.create(属性1=1,属性2=2,...)

创建数据方案二:
创建MyModel的实例对象,并调用save()进行保存。

obj = MyModel(属性=,属性=)
obj.属性 = 值
obj.save()

你可能感兴趣的:(django,分布式,python)