Django后端框架(五)静态文件|APP|分布式路由|模型层|ORM介绍

【静态文件】

什么是静态文件:图片,CSS,js,音频,视频等

【静态文件的配置】

在settings.py中配置

步骤:

step1.配置静态文件的访问路径(该配置默认存在):

  • 该访问路径表示通过哪个url地址寻找静态文件
  • 指定访问静态文件时需要通过/static/xxx或者http://127.0.0.1:8000/static/xxx('xxx'表示具体的静态资源位置,'xxx'前面的'/static/'表示现在配置的访问路径,即STATIC_URL)

STATIC_URL = '/static/'

step2.配置静态文件的存储路径:

  • STATTICFILES_DIRS保存的是静态文件在服务器端的存储位置("static"表示静态文件的存储文件夹,是直接在项目文件夹下创建的)

STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),) 

# 注意:最后一定要加上逗号,因为这是元组!

【静态文件访问】

*模板中访问静态文件:img标签为例

  • 方案1:直接拼接访问路径

<img src="/static/images/xxx.jpg">

或者

<img src="http://127.0.0.1:8000/static/images/xxx.jpg">

  • 方案2:通过{% static %}标签访问静态文件
  1. 加载static:{% load static %}
  2. 使用静态资源:<img src="{% static '静态资源路径' %}">

【Django应用】

*是不是所有的业务模块的视图函数都放在一个views.py里?解耦?

应用:在Django项目中是一个独立的业务模块。可以包含自己的路由、视图、模板、模型

【创建应用】

step1:用manage.py中的子命令startapp创建应用文件夹

python3 manage.py startapp 应用名

step2:在settings.py的INSTALLED_APPS列表中配置安装此应用

INSTALLED_APPS = [

        '应用1的应用名',

        '应用2的应用名'

]

应用文件夹结构:

  • migrations文件夹:放置当前应用模型层相关迁移文件
  • admin.py:管理后台
  • apps.py:应用下的相关配置
  • models.py:模型层的入口
  • tests.py:测试模块
  • views.py:当前应用的视图模块

【分布式路由】

Django中,主路由配置文件(urls.py)可以不处理用户具体路由,主路由配置文件的可以做请求的分发(分布式请求处理)。具体的请求可以由各自的应用来进行处理。

【配置分布式路由】

step1:主路由中调用include函数。用于将当前路由转到各个应用的路由配置文件的urlpatterns进行分布式处理。

include('app名字.url模块名')

step2:应用下配置urls.py。应用下手动创建urls.py文件,内容结构同主路由完全一样。

样例:(以http://127.0.0.1:8000/music/index为例)

主路由urls.py中:

from django.urls import path, include  # 导入include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('music/', include('music.urls'))  # 此行调用
]

应用下的urls.py中:

from django.urls import path
from . import views

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

【应用下的模板】

应用内部可以配置模板目录。

step1:应用下手动创建templates文件夹

step2:在settings.py中开启应用模板功能

TEMPLATE配置项中的'APP_DIRS'值为True即可

****应用下templates和外层templates都存在时,Django会按照查找模板规则处理:

  • 优先查找外层templates目录下的模板
  • 若外层未找到,则按INSTALLED_APPS配置下的应用顺序逐层查找

解决办法:

在应用的templates文件夹下创建一个与当前应用同名的文件夹,将模板放置在该文件夹中,之后用'应用名/模板文件'进行响应,如:

一个news应用,templates文件夹下创建了一个news文件夹,模板文件index.html放置在news文件夹中,我们可以通过'news/index.html'使用该模板:

return render(request, 'news/index.html')


【模型层】

负责跟数据库之间进行通信。

【Django配置mysql】

step1:安装前确认是否已安装python3-dev和default-libmysqlclient-dev(两个python包),若没安装则需要安装

(图中第二项和第四项)

# 查看是否安装

sudo apt list --installed|grep -E 'libmysqlclient-dev|python3-dev'

# 安装python3-dev和default-libmysqlclient-dev包(哪个没有就安装哪个)

sudo apt-get install python3-dev default-libmysqlclient-dev

step2:安装python库mysqlclient(版本1.3.13以上)

sudo pip3 install mysqlclient

step3:进入mysql(mysql -uroot -p),执行以下命令。通常数据库名与项目名保持一致

create database 数据库名 default charset utf8

step4:在settings.py里进行数据库配置,修改DATABASE配置项的内容,将sqlite3改为mysql

DATABASE = {

        'default': {

                'ENGINE': 'django.db.backends.mysql',  # 数据库存储引擎

                'NAME': '要连接的数据库的名称',

                'USER': '登录到数据库的用户名',

                'PASSWORD': '数据库的密码',

                'HOST': '连接具体数据库的IP',

                'PORT': '连接具体数据库的端口'

        }

}

*其他数据库存储引擎,

如:'django.db.backends.sqlite3'、'django.db.backends.oracle'、'django.db.backends.postgresql'

【模型】

模型:一个Python类,它是由django.db.models.Model派生出的子类

  • 一个模型类代表数据库中的一张数据表
  • 模型类中每一个类属性都代表数据库中的一个字段
  • 模型是数据交互的接口,是表示和操作数据库的方法和方式

【ORM框架】

  • 定义:ORM(Object Relational Mapping),即对象关系映射,它是一种程序技术,它允许我们使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库
  • 作用:
    1. 建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库
    2. 根据设计的模型类生成数据库中的表格
    3. 通过简单的配置就可以进行数据库的切换
  • 优点:
    1. 只需要面向对象编程,不需要面向数据库编写代码(对数据库的操作都转化成对类属性和方法的操作;不用编写各种数据库的SQL语句)
    2. 实现了数据模型与数据库的解耦,屏蔽了不同数据库操作上的差异(不在关注用的是mysql、oracle等数据库的内部细节;通过简单的配置就可以轻松更换数据库,而不需要修改代码)
  • 缺点:
    1. 对于复杂业务,使用成本较高
    2. 根据对象的操作转换成SQL语句,根据查询的结果转化成对象,在映射过程中有性能损失
  • 映射关系:

【模型示例】

*添加一个bookstore_book数据表来存放图书馆中书目信息

step1:添加一个bookstore的APP

python3 manage.py startapp bookstore

step2:添加模型类并注册APP

以下是创建模型类:

# 模板
# file: 应用文件夹/models.py
from django.db import models

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

# 样例
# file: bookstore/models.py
from django.db import models

class Book(models.Model):
    title = models.CharField("书名", max_length=50, default='')
    price = models.DecimalField('定价', max_digits=7, decimal_places=2, default=0.0)

step3:数据库迁移

*迁移:是Django同步您对模型所作更改(添加字段,删除模型等)到数据库模式的方式

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

最终得到mysql数据库表如下:

bookstore_book表内容如下:

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值