Django学习Day4

news2024/10/3 6:34:21

1.静态文件

静态文件一般是指网页中的图片、js、css、音视频文件。是指不会随着用户的请求动态变更的文件信息和互联网资源。

关于静态文件的配置,需要在settings.py中进行指定。
(1)配置静态文件的访问路径。
(2)STATIC_URL = ‘/static/’
(3)说明:
指定访问静态文件时需要通过/static/xxx或者http://127.0.0.1/static/xxx
[xxx表示具体的资源位置]

配置静态文件的存储路径STATICFILES_DIRS,保存的是静态文件在服务器端的存储位置。

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

修改配置文件settings.py如下:
在这里插入图片描述
通过在模板层直接使用img标签以常规html5使用超链接的绝对地址和相对地址都能够从static模板中引入我们需要的资源文件。
在这里插入图片描述另外一种方案是Django给我们提供的。
通过{% static %}标签访问静态文件
1.加载static, - {% load static %}
2.使用静态资源 - {% static ‘静态资源路径’ %}
3.样例

<img src = “{% static ‘/image/img.png’ %}”>

在这里插入图片描述在使用{%static% }标签前,首先需要使用{% load static%}进行静态资源的导入。
通过static标签进行定义,如果在settings.py中修改了STATIC_URL的值,那么可以在不修改模板文件中的url的情况下,直接让模板层能够加载静态资源,避免路径的重新拼接,节约开发时间和开发成本。

2.Django应用及分布式路由

应用是指在Django项目中,是一个独立的业务模块,可以包含自己的视图、模板、模型。
应用之间的代码也应当实现相互隔离,避免项目过于复杂。
创建应用需要手动进行创建。
使用命令:

Python manage.py startapp [应用名]

随后在settings.py中的INSTALLED_APPS列表中配置安装此应用。

使用命令:
在这里插入图片描述
在项目目录下,得到了一个和应用名同名的项目文件夹:
在这里插入图片描述

在文件夹创建成功后,可以在settings.py中增加创建的应用名称到INSTALLED_APP数组中。可以看到INSTALLED_APP中有一些默认的数据,暂时可以不用管这些默认数据,我们只要增加我们的新应用程序即可。这个流程也被称之为“应用注册”
在这里插入图片描述
在应用程序文件夹中,migrations是一个数据库同步文件夹,主要用于和DB进行交互。admin.py是django提供的一个admin管理后台。

分布式路由

分布式路由主要解决应用程序过多导致的路由过于复杂。避免多条路由需要重复的在项目文件的同一个urls.py中进行编写导致的开发困难。
主要实现方式为:主路由配置文件urls.py不处理具体的客户端路由请求。主路由有且实现对请求的分发,将请求分发到其他特定的应用中,由各自应用实现对路由的处理。
在这里插入图片描述
要实现这种方式,需要在应用程序内新建一个文件urls.py用于处理应用内的路由。由urls.py将请求转发到views应用。
为了实现这种方式,需要在主路由中使用include函数导入应用程序。
语法:

Include(‘app名字’,url模块名)

我们这里创建的是一个appdemo的应用程序,因此,在Demo1的urls中,为了实现请求转发,在urlpatterns中添加如下内容。
在这里插入图片描述

使用inclde方式将appdemo/的请求转发到appdemo下的urls.py中。
为了实现include函数,需要在django.urls导入include

from django.urls import include

接下来,在appdemo应用程序的urls.py中增加一条path规则。如果没有urls.py,则需要新建一个。

在这里插入图片描述随后在demo1下的views.py中,对这条应用程序内的路由规则进行处理。
在这里插入图片描述

通过浏览器访问,确认主路由和应用程序之间实现的分布式路由效果成功实现。

在这里插入图片描述

应用下的模板

在应用下手动创建templates文件夹。
在这里插入图片描述

Settings.py中,开启应用模板功能,配置TEMPLATE的APP_DIRS的值为True。
在这里插入图片描述
当应用下的templates和外层的templates都存在时,Django需要查找模板规则:
1.优先查找外层templates目录下的模板
2.按照INSTALLED_APPS配置下的应用顺序逐层查找。
在实际操作中,将templates下的index.html进行编写,并在views.py中使用render函数读写模板层文件。
在这里插入图片描述在这里插入图片描述

在对这些文件进行编辑后,打开浏览器访问,测试网页信息。
在这里插入图片描述可以发现,应用程序下的views函数起了作用,从应用程序文件夹下的templtes模板层文件夹中获取了显示页面并展示给用户。
如果外层有模板,那么优先寻找外层的模板,否则寻找应用下的同名文件。为了解决这一问题,可以通过嵌套同名文件夹、更改文件名和文件夹名的方式解决。

模型层及ORM

关于模型层

在这里插入图片描述模型层的主要作用是负责跟数据库进行通信。有且仅有模型层能够和数据库进行交互。

由于模型层需要连接数据库,因此,需要在python中安装一个mysqlclient,在django中,ORM层是基于mysqlclient连接mysql。
因此,在安装前,需要先安装python3-dev和default-libmysqlclient-dev用于连接mysql库。

对于mysqlclient的安装

由于直接使用pip install mysqlclient安装失败,因此前往官网下载whl文件进行安装。

官网地址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
由于我的python版本为3.6,电脑为64位,因此我下载了对应的mysqlclient系统,cp3.6_win_amd64意味着3.6版本的python和64位的电脑版本。

在这里插入图片描述
下载后使用pip命令安装,得到successfully installed的结果意味着mysqlclient安装成功。

如果是linux系统,需要先使用apt-get命令安装python3-dev和default-libmysqlclient-dev两个组件,才能使用pip进行mysqlclient的安装,否则安装过程中可能会出现错误。

对于mysql服务器的配置

1.创建数据库
一般数据库的名称和项目名称相同。
2.进入mysql数据库执行
在这里插入图片描述
3.Settings.py进行数据库的配置
在settings.py中找到一个DATABASES的参数,通过修改DATABASES的参数来实现对数据库的连接。
在Django中,不同的数据库的连接所用的参数和引擎内容是不一样的,不同数据库的连接方法需要前往django官网进行深入学习,他们使用的参数也有所不同。因此,在这里仅仅展示mysql的连接方式。每个参数的意思在备注中也进行了表明。
在这里插入图片描述

什么是模型?

模型是Python的一个类,是由Django.db.models.Model派生出的子类。
一个模型类代表数据库的一张数据表。
模型类中的每一个类属性都代表数据库中的一个字段。
模型是数据交互的接口,是表示和操作数据的方法和方式。

ORM框架

ORM也就是对象关系映射。这是一种程序计数,允许开发者使用类和对象对数据库进行操作,从而避免通过sql语句操作数据库。
作用:
1.建立模型类和表之间的对应关系。允许通过面向对象的方式来操作数据库。
2.根据设计的模型类生成数据库中的表格。
3.通过简单的配置就可以进行数据库的切换。

相当于在建立数据库的时候, 数据库就是一个对象,通过ORM计数,把每个数据库的属性当成某一个特定对象的属性,那么我们只要对该对象的属性进行操作,就可以自动的连接到数据库中提取出目标数据且无需注意底层的数据库语句的编写。
在我们更换数据库的时候,仅仅需要在settings.py中切换我们的数据库目标就可以实现数据库的切换。

只需要使用面向对象的编程技术,不需要面向数据库编写代码,实现了数据模型和数据库的解耦合,屏蔽了不同数据库操作上的差异,开发人员无需关注mysql、oracle等数据库的内部细节。

但是对于复杂的业务而言,使用的成本会过高。根据对象的操作转换成sql语句,根据查询的结果转换为特定的对象,在映射的过程中和语义转换中会有性能的损失。如果直接使用sql语句和数据库进行交互会较好的提高网站的性能,相当于增加了以此python语句到sql语句的转换,好处就是无需开发人员了解数据库语句的处理。
在这里插入图片描述
上图展示的是ORM和DB的对应关系。

示例:编写一个应用程序studentapp和student_info数据表来存放学校的学生信息。
1.在Demo1项目中添加一个studentapp应用程序。
在这里插入图片描述

2.添加模型类并注册app
注册app

在这里插入图片描述

生成的studentapp目录下的models.py编写如下代码:
在这里插入图片描述

3.在数据库中新建表
现在通过show tables命令可以看到我们的数据库中是没有表文件的。
在这里插入图片描述
输入命令:
Python manage.py makemigrations 生成中间迁移文件
在这里插入图片描述
根据models.py的内容生成中间文件,并保存在migrations文件夹中。

输入命令:

Python manage.py migrate

在这里插入图片描述执行迁移程序实现数据库的迁移,将每个应用下的migrate迁移到mysql服务器中。
可以登录远程服务器查看是否出现了新的表文件。
在这里插入图片描述
通过desc命令查看模型层的数据库内容可以发现对于数据内容已经成功的新建了。数据表格式和我们在模型层中建立的类的内容是完全一致的。避免了开发人员需要重复的进行数据库代码的编写和运行。
在这里插入图片描述

因此,可以归纳出,在模型层,创建数据库的语法如下:

from django.do import models;
Class 模型类名(models.Model):
	字段名 = models.字段类型(字段选项)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/95125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NodeJs学习笔记】WebPack介绍

什么是WebPack WebPack主要用于模块打包。 它做的事情是&#xff0c;分析项目结构&#xff0c;找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言&#xff08;Scss&#xff0c;TypeScript等&#xff09;&#xff0c;并将其打包为合适的格式以供浏览器使用。 官…

如何使用 Git 操控Gitee远程库?如何进行 团队内协作 与 跨团队协作 ?这一篇就够了~

目录 前言 一、创建别名 二、推送本地库到远程库 三、拉取远程库代码到本地库 四、 克隆远程库到本地 五、团队内协作 六、跨团队协作 前言 如何通过Git操作Gitee/GitHub远程库&#xff1f;在Gitee/GitHub上如何进行 团队协作 与 跨团队协作&#xff0c;看完本篇&#x…

关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

LeetCode 热题 C++ 98. 验证二叉搜索树 101. 对称二叉树

力扣98 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1&#xff1a…

记一次 .NET 某工控MES程序 崩溃分析

一&#xff1a;背景 1.讲故事 前几天有位朋友找到我&#xff0c;说他的程序出现了偶发性崩溃&#xff0c;已经抓到了dump文件&#xff0c;Windows事件日志显示的崩溃点在 clr.dll 中&#xff0c;让我帮忙看下是怎么回事&#xff0c;那到底怎么回事呢? 上 WinDbg 说话。 二&…

Linux文件权限概念

目录 前言 1、Linux 文件属性 1.1、档案类型权限 1.2、连结数 1.3、档案拥有者 1.4、档案所属群组 1.5、档案容量 1.6、档案最后被修改的时间 1.7、档名&#xff08;文件名&#xff09; 2、如何改变文件属性和权限 2.1、改变所属群组, chgrp 2.2、改变档案拥有者, c…

Codeforces Round #838 (Div. 2) E. Tree Sum(组合数学 prufer序列 枚举边算贡献)

题目 n(n<5e5)个点的树&#xff0c;边只能选-1或1&#xff0c; 若对于每个点i来说&#xff0c;i相连的所有边的乘积值为-1&#xff0c;则称这棵树是「good tree」 根据Cayley公式&#xff0c;有种树形&#xff0c; 对于每一种树形&#xff0c;每条边都有2种选择&#xff…

什么是飞书机器人?如何定时发送飞书机器人消息?

什么是飞书机器人&#xff1f; 机器人是飞书应用的一种能力类型。基于飞书的机器人能力&#xff0c;开发者能够以较低的开发成本&#xff08;只需在服务端开发&#xff09;&#xff0c;实现在飞书单聊或群组中的消息推送和简单互动&#xff0c;完成企业系统数据与飞书的互联互通…

42_CAN列表模式接收中断实验

目录 CAN结构体 CAN_InitTypeDef初始化结构体详解 发送及接收结构体: CanTxMsg及CanRxMsg详解 CAN_FilterlnitTypeDef筛选器结构体讲解 硬件连接图 实验源码 CAN结构体 从STM32的CAN外设我们了解到它的功能非常多,控制涉及的寄存器也非常丰富,而使用STM32标准库提供的各…

pandas数据分析总结

Pandas 是 Python 语言的一个扩展程序库&#xff0c;用于数据分析。其中DataFrame&#xff0c;Json&#xff0c;数据筛选的使用频次很高&#xff0c;值得重点将基本用法学习并总结。 版本信息&#xff1a;python 3.7 pandas 1.3.5 一、DataFrame DataFrame 是一个表格型的数…

【持续更新】计算机类PDF整理

计算机相关的书籍太多太多了&#xff0c;整理太多反而很乱&#xff0c;这边我根据自己的经验和理解选了一些典型的书籍&#xff0c;大部分是自己看过觉得很有用的&#xff0c;有些是听说很nice的&#xff0c;有些是经典的&#xff0c;大家可以自行下载。 持续更新中&#xff0…

Kaggle竞赛——Titanic泰坦尼克之灾(0.76315==>0.79186)

Kaggle竞赛网址&#xff1a;https://www.kaggle.com/c/titanic 上一章&#xff1a;Kaggle竞赛——Titanic泰坦尼克之灾&#xff08;保姆级基础版&#xff09; 本次Kaggle泰坦尼克之灾分析过程大致分为&#xff1a; 第1步&#xff1a;了解数据&#xff08;上一章&#xff09; …

19_SpringBoot拓展注解@SpringBootApplication和@Configuration

文章目录Spring Boot拓展注解SpringBootApplication和Configuration0x01_SpringBootApplicationSpringBootConfigurationEnableAutoConfigurationComponentScan0x02_ConfigurationFull 全模式&#xff0c;Lite 轻量级模式Spring Boot拓展注解SpringBootApplication和Configurat…

计算机网络原理 课后习题(作业)持续更新ing

【1-03 】试从多个方面比较电路交换、报文交换和分组交换的主要优缺点 &#xff08;1&#xff09;电路交换的主要特点: ①电路交换三个阶段&#xff1a;建立连接、通信、释放连接&#xff1b; ②在整个通信过程中&#xff0c;通信的双方自始至终占用着所使用的物理信道。 由…

多线程知识笔记(五)_单例模式

文章目录1、什么是单例模式2、饿汉模式3、懒汉模式1、什么是单例模式 单例模式是一种设计模式。 什么是设计模式呢&#xff1f;设计模式就是一种模板&#xff0c;就像做饭的时候&#xff0c;新手做饭什么调料都是一把放进锅里&#xff0c;有的菜就讲究调料的先后顺序&#xff…

Java web 2022跟学尚硅谷(十一) Vue基础和Axios基础和json基础

Java web 2022跟学尚硅谷十一后端基础 书城Vue在js中定义对象的2种方式方式一方式二简单的Vue代码绑定元素的属性方式一 v-bind:value方式二 :value双向数据绑定 v-model:方式一方式二 :value可以省略&#xff0c;trim去除首尾空格条件渲染 v-if条件渲染 v-else条件渲染 特别注…

[附源码]Python计算机毕业设计高校医务管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

极地土活性层和永久冻土的比较宏基因组学

北极地区有大约87%由低有机碳矿物土壤组成&#xff0c;但对低碳永久冻土&#xff08;PF&#xff09;和活性层&#xff08;AL&#xff09;土壤中微生物活性的了解仍然有限。多种物理和生物因素可能影响碳循环&#xff0c;包括土壤化学、氮等养分的可用性以及现有微生物群落的结构…

论文解析[9] Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

发表时间&#xff1a;2021 论文地址&#xff1a;https://arxiv.org/abs/2103.14030 代码地址&#xff1a;https://github.com/microsoft/Swin-Transformer 文章目录摘要3 方法3.1 总体框架3.2 基于自注意力的移动窗口3.3 结构变形5 结论摘要 这篇论文提出了一个新的ViT叫作Swi…

大数据培训kettle安装部署

kettle安装部署和使用 2.1 kettle安装地址 官网地址 https://community.hitachivantara.com/docs/DOC-1009855 下载地址 https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 2.2 Windows下安装使用 2.2.1 概述 在实际企业开发中&#xff0c;都是在本…