当前位置: 首页 > news >正文

Django(二、静态文件的配置、链接数据库MySQL)

文章目录

  • 一、静态文件及相关配置
      • 1.以登录功能为例
      • 2.静态文件
      • 3.资源访问
      • 4.静态文件资源访问
            • 如何解决?
  • 二、静态文件相关配置
      • 1. 如何配置静态文件配置?
      • 2.接口前缀
      • 3. 接口前缀动态匹配
      • 4. form表单
            • 请求方法补充
            • form表单要注意的点
  • 三、request对象方法
      • request请求结果
            • 代码展示
  • 四、Django连接数据库
      • pycharm连接MySql
      • Django连接MySQL
  • 五、Django ORM简介
      • 基本ORM操作(数据的迁移)
            • 关于数据库迁移失败的原因
      • Django ORM字段增删改查
      • Django ORM数据增删改查

一、静态文件及相关配置

1.以登录功能为例

login.html页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="../static/bootstrap-3.4.1-dist/css/bootstrap.min.css"><script src="../static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
</head>
<body><div><div class="container"><div class="row"><h1 class="text-center">用户登录</h1><div class="col-md-8 col-md-offset-w"><form action=""><p>username:<input type="text" class="form-control"></p><p>password:<input type="text" class="form-control"></p><input type="submit" class="btn btn-success btn-block" value="用户登录"></form></div></div></div>
</div>

2.静态文件

不经常变化的文件,主要针对html文件所使用到的各种资源,比如css文件、js文件、img文件、第三方框架文件

Django针对静态文件资源需要单独开一个目录,统一存放在static文件夹里

static目录   该目录下类型文件居多可再分css目录js目录img目录utils目录/plugins目录/libs目录/others目录/不创

3.资源访问

我们在地址栏之所以输入路由获取到相对应的资源,是因为程序员提前开设了资源接口,比如在网址输入127.0.0.1:8000/admin,就能访问对应的接口资源
在这里插入图片描述

4.静态文件资源访问

直接引入css和js是不能直接使用动态效果的,想要静态文件配置添加,添加了bootstrap之前要添加jQuery。

默认情况下无法访问,是因为没有提前开设静态文件资源的访问接口,如图所示
在这里插入图片描述

login能请求成功,是浏览器朝这个网址http://127.0.0.1:8000/login/,这个后端已经开设了访问端口。

请求URL:http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css 是在自己的浏览器朝这个网址请求资源,但是后端没有开设端口,所以访问不到资源

如何解决?

理论我们应该在urls填写相对应的关系,但是静态文件太多了,所以Django专门为静态文件开设了一个static文件资源接口

二、静态文件相关配置

1. 如何配置静态文件配置?

首先在setting.py里面找到STATIC_URL = ‘/static/’,在下面配置static所在资源的路径
在这里插入图片描述
相当于把static路径添加到环境变量中去,但是要注意把login.html中的…去掉

2.接口前缀

STATIC_URL = '/static/'  # 访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),  # 存储静态文件资源的目录名称os.path.join(BASE_DIR, 'static1'),  # 存储静态文件资源的目录名称os.path.join(BASE_DIR, 'static2'),  # 存储静态文件资源的目录名称
]"""接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回"""

查找顺序
接口前缀>>>接口资源文件(自上而下,找到就截止),接口前缀对了才有资格访问接口文件资源

要是想切换接口前缀呢?

有时候就浏览器会请求临时缓存内容发送我们,我们不可能一个一个去改static,太麻烦了,我们直接动态获取

3. 接口前缀动态匹配

静态文件配置
<link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
<script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>

如果需要改接口前缀的话,需要把上面的静态文件配置改为下面的模板语法(可动态获取)

django提供的模板语法{% load static %},相对于模块。
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

4. form表单

action      控制数据提交的地址1.action=""  数据默认提交当前页面所在的地址2.action="https://www.baidu.com/"  完整网址3.action="/index"  朝当前服务端的index地址提交method      控制数据提交的方法1.get    默认2.post    可以改post  method="post"form表单默认get请求  , 朝浏览器发送请求会是敏感数据,要换成post请求,mothed=post
请求方法补充

1.get请求 :朝服务端索要数据,也可以携带一些额外的要求。

​ 携带额外数据方式:URL?xxx=yyy&uuu=zzz,但是问号后面携带的数据大小是有限制的(2-8kb),并且不能携带敏感数据(密码)

2.post请求: 朝服务端提交数据

​ 携带额外数据的方式:请求体,请求体携带数据安全性较高并且没有大小的限制。

​ 前期发送post请求需要注释掉配置文件中的某一行

method="post"
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]

在这里插入图片描述

form表单要注意的点

1.关于请求方法

2.获取用户标签要加name属性,不加name属性是填写不了

3.修改settings里面的配置

三、request对象方法

理解

request={WSGIReques} <WSGIRequest: GET '/login/'>
两层封装,第一层wsi封装了大字典,第二层是django封装成了方法,返回给我们的是里面含有很多方法

request请求结果

请求方法描述结果
request.method结果是纯大写的字符串数据GET/POST
request.POST获取post请求体里面携带的数据
request.POST.get()获取列表最后一个数值
request.POST.getlist()获取整个列表数据
request.GET获取网址问号后面携带的数值
request.GET.get()获取列表最后的一个数值
request.GET.getlist()获取整个列表数据
代码展示
代码展示
def login(request):"""如果get请求直接返回html页面如果是post请求,那么需要获取发送过来的数据:param request::return:"""print(request.GET)if request.method=='GET':# 1.返回html页面# print(request.method)  # / GET/POSTreturn render(request,'login.html')elif request.method=='POST':#2.获取post请求体里面的数据print(request.POST)   # <QueryDict: {'kimi': ['kimi'], 'pwd': ['123']}>name=request.POST.get('name')  # 获取列表最后一个数据值pwd=request.POST.get('pwd')print(name,type(name),pwd,type(pwd))  # kimi <class 'str'> 123 <class 'str'>name1=request.POST.getlist('name')print(name1,type(name1))  # ['kimi'] <class 'list'>return HttpResponse('数据我收到了')

四、Django连接数据库

pycharm连接MySql

1,pycharm初次连接数据库,都要下载相应的驱动,驱动不行就换驱动,验证的话就是登录用户名(端口和地址) 库名,验证登录就用test connection

三个位置查找数据库相关1.右侧上方database2.左下方database3.配置里面的plugins插件搜索安装
注意:	都没有再没有卸载pycharm重新装	

在这里插入图片描述
2.登录管理员账户和密码,连接你需要的数据库(库要提前创建好),在连接之前可以先点击Test Connection 测试连接是一次。注意:在公司不能是管理员的用户登录的!

在这里插入图片描述
3.成功连接成功
在这里插入图片描述

Django连接MySQL

django自带的sqlite3是一个小型的数据库,功能比较少,主要是用于本地测试。实际项目都会替换它的

1.修改配置文件中的数据库设置成Django连接MySQL

django配置文件中默认的是sqlite3数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}django连接MySQL要修改上述配置
1.第一配置文件中配置
DATABASES = {'default': {# 'ENGINE': 'django.db.backends.sqlite3',   # 修改成MySQL数据库# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),   # 连接数据库名称 先创建好才能指定'ENGINE': 'django.db.backends.mysql',   # 修改成MySQL数据库'NAME': 'djangodb1',   # 连接数据库名称 先创建好才能指定'HOST': '127.0.0.1','PORT': 3306,'USER': 'root','PASSWORD': '123','CHARSET': 'utf8'}
}注意,左边的名字都要大写!!!!

2.手动改动将默认mysqldb改为pymysql
django默认用的是mysqldb模块链接MySQL, 但是该模块的兼容性不好 需要手动改为用pymysql链接,需要指定模块

​ 2.1 django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码

import pymysql
pymysql.install_as_MySQLdb()

​ 2.2 django2.X及以上都可以直接通过下载mysqlclient模块解决

pip3.8 install mysqlclient

该模块windows下载问题不大 主要是mac电脑可能有问题

五、Django ORM简介

ORM:对象关系映射

​ 优点:它能够让不会SQL语句的python程序员,使用python面向对象的语法来操作数据库。

​ 缺点:封装程度太高,有时候sql语句的效率偏低,需要自己写SQL语句。

类             表
对象           一条条数据
对象点名字     数据获取字段对应的值

基本ORM操作(数据的迁移)

1.在models.py中编写模型类

class User(models.Model)# 字段名=字段类型+约束条件# id int primary_key auto_incrementid=models.AutoField(primary_key=True)# username varchar(32)  # CharField必须要加max_length参数,不加报错name=models.CharField(max_length=32)# password intage=models.IntegerField()

2.执行数据库迁移项目
打开terminal输入命令

# 数据库迁移
python38 manage.py makemigrations   将操作记录到小本本上(migrations)
# 数据库同步到数据库中
python38 manage.py migrate    将操作同步到数据库上注意:每次在models.py修改了与数据库相关的代码,都需要在执行上述命令

在这里插入图片描述

关于数据库迁移失败的原因

1.一个数据库尽量只对应一个django项目
2.多个Django使用一个数据库,极易容易报错

Django ORM字段增删改查

name = models.CharField(max_length=64)
password1 = models.CharField(max_length=64, null=True)  直接在写一个字段名就行,给它一个默认值如果要删除的话,直接删掉那一行字段代码就行增删改查都需要执行两句话:
python38 manage.py makemigrations
python38 manage.py migrate

Django ORM数据增删改查

相关文章:

Django(二、静态文件的配置、链接数据库MySQL)

文章目录 一、静态文件及相关配置1.以登录功能为例2.静态文件3.资源访问4.静态文件资源访问如何解决&#xff1f; 二、静态文件相关配置1. 如何配置静态文件配置&#xff1f;2.接口前缀3. 接口前缀动态匹配4. form表单请求方法补充form表单要注意的点 三、request对象方法reque…...

Linux 本地Yearning SQL审核平台远程访问

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用…...

Leetcode—226.翻转二叉树【简单】

2023每日刷题&#xff08;二十四&#xff09; Leetcode—226.翻转二叉树 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …...

【阿里云】任务2-OSS对象存储教程(找我参加活动可获得京东卡奖励)

目录 前言说明第一步第二步第三步&#xff1a;开通并使用OSS传输加速三、清理第四步-提交作品第五步-提交记录到小程序 前言 本次任务是阿里云官方发出的&#xff0c;每个任务30软妹币&#xff0c;欢迎大家加入我的活动群&#xff0c;门槛很低&#xff0c;所有人都可以参加&…...

人工智能模型转ONNX 连接摄像头使用ONNX格式的模型进行推理

部署之后模型的运算基本上能快5倍。本地部署之后&#xff0c;联网都不需要&#xff0c;数据和隐私不像在网上那样容易泄露了。 模型部署的通用流程 各大厂商都有自己的推理工具。 训练的归训练&#xff0c;部署的归部署&#xff0c;人工智能也分训练端和部署端&#xff0c;每一…...

osgEarth之添加shp

目录 效果 代码 代码分析 加载模式 效果 代码 #include "stdafx.h" #include <osg/Notify> #include <osgGA/StateSetManipulator> #include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers>#include <osgEarth/MapNo…...

Eolink Apikit 版本更新:「数据字典」功能上线、支持 MongoDB 数据库操作、金融行业私有化协议、GitLab 生成 API 文档...

&#x1f389; 新增 搭建自定义接口协议架构&#xff0c;支持快速适配金融行业各类型私有协议的导入、编辑和展示。 数据字典功能上线&#xff0c;支持以数据字典的形式管理参数枚举值&#xff1b; 数据库连接支持 MongoDB 数据库操作&#xff1b; 基于 Apikit 类型导入 API…...

GPT-4V:AI在医疗领域的应用

OpenAI最新发布的GPT-4V模型为ChatGPT增添了语音和图像功能&#xff0c;为用户提供了更多在日常生活中使用ChatGPT的方式。这次更新将为用户带来更加便捷、直观的交互体验&#xff0c;用户可以直接通过拍照上传图片&#xff0c;并提出相关问题。OpenAI的最终目标是构建一个安全…...

OpenCV 在ImShow窗体上选择感兴趣的区域

窗体上选择感兴趣ROI区域 在计算机视觉处理中, 通常是针对图像中的一个特定区域进行处理, 有时候这个特定区域需要人来选择, OpenCV 也提供了窗口选择ROI机制. 窗体支持两种选择ROI区域的方法, 一个是单选, 一个是多选, 操作方法如下: 单选: 通过鼠标在屏幕上选择区域, 然后通过…...

ubuntu 安装redis详细教程

下载redis安装包 链接如下&#xff1a; http://redis.io/download 本例版本为&#xff1a;redis-7.2.3.tar.gz 下载安装包到目录/opt下&#xff0c;路径可修改&#xff0c;本例为/opt wget https://github.com/redis/redis/archive/7.2.3.tar.gz 解压安装包&#xff0c;并…...

qframework 架构 (作者:凉鞋)使用笔记

一些准则&#xff1a; 根据VIEW->SYSTEM->MODEL的分层架构 初始架构&#xff1a; app. using FrameworkDesign;namespace ShootingEditor2D&#xff08;项目的命名空间&#xff09; {public class ShootingEditor2D &#xff08;游戏名称&#xff09;: Architecture&l…...

【JMeter】定时器分类以及场景介绍

1. 定时器分类 固定定时器 作用&#xff1a;请求之间设置等待时间应用场景&#xff1a;查询商品列表后&#xff0c;去查看列表商品详情页。针对商品列表数据量比较大的&#xff0c;响应时间会比较长&#xff0c;就需要设置等待时间然后去查看商详 2.定时器的作用域&#xff1…...

Spring Boot 请求/actuator/beans 无法访问 返回404

问题复现 在保证项目加入了spring-boot-starter-actuator依赖&#xff0c;并成功启动后。通过浏览器进行访问&#xff0c;返回如下图结果&#xff1a; 问题排查 1. 查看日志 从日志中可以看到基于路径’/actuator’下只暴露了一个端点 2. 访问http://localhost:8080/actua…...

AVD联网

AVD联网&#xff1a; 解决Android Studio模拟器无法联网_android studio模拟器没有网络-CSDN博客 挺好的&#xff0c;就是访问网站的时候只能用ip&#xff0c;而不能用域名。 AVD设置代理&#xff1a; android studio踩坑记 AVD模拟器代理设置_android studio avd 配置代理-…...

[Vue warn]: Missing required prop: “action“

控制台显示错误信息 vue.runtime.esm.js:4605 [Vue warn]: Missing required prop: "action" found in ---> <ElUpload> at packages/upload/src/index.vue <ElTableRow> <ElTableBody> <ElTable> at pack…...

Python标准库有哪些

概述 可用性注释 内置函数 内置常量 由 site 模块添加的常量 # Author : 小红牛 # 微信公众号&#xff1a;wdPython内置类型 逻辑值检测 布尔运算 — and, or, not 比较运算 数字类型 — int, float, complex 布尔类型 - bool 迭代器类型 序列类型 — list, tuple, range 文本…...

基于ssm的校园办公室报修管理系统

基于ssm的校园办公室报修管理系统 摘要 基于SSM的校园办公室报修管理系统是一个现代化的、高效的报修平台&#xff0c;它能够帮助校园内的教职工和学生更方便、更快捷地提交和处理报修请求。该系统基于Spring、SpringMVC和MyBatis&#xff08;简称SSM&#xff09;开发&#xff…...

1Panel 升级 Halo报错

1Panel 升级 Halo报错 通过 1panel 升级 2.10.0 -> 2.10.1 后启动失败,出现 No value found for protocol 错误&#xff0c; 1Panel-halo-rzxY | Caused by: io.r2dbc.spi.NoSuchOptionException: No value found for protocol 1Panel-halo-rzxY | at io.r2dbc.spi.Conn…...

spring-clound基础开发

一、使用openfeig调用远程另外一个服务接口 1、创建一个spring boot工程,并且创建2个模块来当微服务模块 2、分别配置2个模块的启动文件 3、分别两个模块下创建一个测试的控制器 4、在项目的根目录的pom.xml中添加spring-cloud配置 <properties><java.version>1…...

基于SSM的劳务外包管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…...

figma MCP + cursor如何将设计稿生成前端页面

一、准备工作 figma MCP需要通过figma key来获取设计稿权限&#xff0c;key的生成步骤如下 1. 打开figma网页版/APP&#xff0c;进入账户设定 2. 点击生成token 3. 填写内容生成token(一定要确认复制了&#xff0c;不然关闭弹窗后就不会显示了) 二、配置MCP 4. 进入到cursor…...

ADI的BF609双核DSP怎么做开发,我来说一说(五)LAN口测试

作者的话 ADI的双核DSP&#xff0c;第二颗是Blackfin系列的BF609&#xff0c;这颗DSP我用了很久&#xff0c;比较熟悉&#xff0c;且写过一些给新手的教程。 硬件准备 ADSP-BF609-CORE&#xff1a;ADI BF609开发板 产品链接&#xff1a;https://item.taobao.com/item.htm?…...

Go中的协程并发和并发panic处理

1 协程基础 1.1 协程定义&#xff08;Goroutine&#xff09; 概念&#xff1a;Go 语言特有的轻量级线程&#xff0c;由 Go 运行时&#xff08;runtime&#xff09;管理&#xff0c;相比系统线程&#xff08;Thread&#xff09;&#xff0c;创建和销毁成本极低&#xff0c;占用…...

使用 OpenCV (C++) 进行人脸边缘提取

使用 OpenCV (C) 进行人脸边缘提取 本文将介绍如何使用 C 和 OpenCV 库来检测图像中的人脸&#xff0c;并提取这些区域的边缘。我们将首先使用 Haar级联分类器进行人脸检测&#xff0c;然后在检测到的人脸区域&#xff08;ROI - Region of Interest&#xff09;内应用 Canny 边…...

<el-table>构建树形结构

最佳实践 el-table实现树形结构主要依靠row-key和tree-props来实现的。 &#x1f4ab; 无论是el-table实现的树形结构还是el-tree组件都是绑定的树形结构的数据&#xff0c;因此如果数据是扁平的话&#xff0c;需要进行树化。 代码 <template><div><el-table:d…...

Python 训练营打卡 Day 33-神经网络

简单神经网络的流程 1.数据预处理&#xff08;归一化、转换成张量&#xff09; 2.模型的定义 继承nn.Module类 定义每一个层 定义前向传播流程 3.定义损失函数和优化器 4.定义训练过程 5.可视化loss过程 预处理补充&#xff1a; 分类任务中&#xff0c;若标签是整…...

游戏设计模式 - 子类沙箱

核心思想 子类沙箱模式&#xff08;Subclass Sandbox&#xff09;通过将核心逻辑封装在基类中&#xff0c;为子类提供安全的"沙箱"环境。子类通过组合或重写基类提供的预定义操作来实现行为&#xff0c;而非直接操作底层系统。 这种模式在游戏开发中常用于实现角色…...

Simplicity studio SDK下载和安装,创建工程

下载SDK工具地址 Simplicity Studio - Silicon Labs 选择适合自己电脑的版本。 这个就使用你自己的邮箱注册一个就可以了&#xff0c;我是用的公司邮箱注册的。 下载完成&#xff1a; 安装 下载完成后右键点击安装&#xff0c;一路下一步 安装完成后&#xff0c;程序自动打…...

SpringBoot自动化部署全攻略:CI/CD高效实践与避坑指南

SpringBoot自动化部署全攻略:CI/CD高效实践与避坑指南 🚀 一、现代化部署方案选型对比 1. 主流CI/CD工具对比 工具优势适用场景Jenkins插件丰富、可扩展性强复杂流水线、混合云环境GitHub Actions与GitHub深度集成、易用GitHub项目、中小团队GitLab CI/CD一体化平台、内置…...

Halcon光度立体法

1、光度立体法&#xff0c;可用于将对象的三维形状与其二维纹理&#xff08;例如打印图像&#xff09;分离。需要用不同方向而且已知照明方向的多个光源&#xff0c;拍摄同一物体的至少三张图像。请注意&#xff0c;所有图像的相机视角必须相同。 物体的三维形状主要被计算为三…...