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.静态文件资源访问如何解决? 二、静态文件相关配置1. 如何配置静态文件配置?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语句/查询审计工具,为DBA与开发人员使用…...
Leetcode—226.翻转二叉树【简单】
2023每日刷题(二十四) 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对象存储教程(找我参加活动可获得京东卡奖励)
目录 前言说明第一步第二步第三步:开通并使用OSS传输加速三、清理第四步-提交作品第五步-提交记录到小程序 前言 本次任务是阿里云官方发出的,每个任务30软妹币,欢迎大家加入我的活动群,门槛很低,所有人都可以参加&…...
人工智能模型转ONNX 连接摄像头使用ONNX格式的模型进行推理
部署之后模型的运算基本上能快5倍。本地部署之后,联网都不需要,数据和隐私不像在网上那样容易泄露了。 模型部署的通用流程 各大厂商都有自己的推理工具。 训练的归训练,部署的归部署,人工智能也分训练端和部署端,每一…...
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 文档...
🎉 新增 搭建自定义接口协议架构,支持快速适配金融行业各类型私有协议的导入、编辑和展示。 数据字典功能上线,支持以数据字典的形式管理参数枚举值; 数据库连接支持 MongoDB 数据库操作; 基于 Apikit 类型导入 API…...
GPT-4V:AI在医疗领域的应用
OpenAI最新发布的GPT-4V模型为ChatGPT增添了语音和图像功能,为用户提供了更多在日常生活中使用ChatGPT的方式。这次更新将为用户带来更加便捷、直观的交互体验,用户可以直接通过拍照上传图片,并提出相关问题。OpenAI的最终目标是构建一个安全…...
OpenCV 在ImShow窗体上选择感兴趣的区域
窗体上选择感兴趣ROI区域 在计算机视觉处理中, 通常是针对图像中的一个特定区域进行处理, 有时候这个特定区域需要人来选择, OpenCV 也提供了窗口选择ROI机制. 窗体支持两种选择ROI区域的方法, 一个是单选, 一个是多选, 操作方法如下: 单选: 通过鼠标在屏幕上选择区域, 然后通过…...
ubuntu 安装redis详细教程
下载redis安装包 链接如下: http://redis.io/download 本例版本为:redis-7.2.3.tar.gz 下载安装包到目录/opt下,路径可修改,本例为/opt wget https://github.com/redis/redis/archive/7.2.3.tar.gz 解压安装包,并…...
qframework 架构 (作者:凉鞋)使用笔记
一些准则: 根据VIEW->SYSTEM->MODEL的分层架构 初始架构: app. using FrameworkDesign;namespace ShootingEditor2D(项目的命名空间) {public class ShootingEditor2D (游戏名称): Architecture&l…...
【JMeter】定时器分类以及场景介绍
1. 定时器分类 固定定时器 作用:请求之间设置等待时间应用场景:查询商品列表后,去查看列表商品详情页。针对商品列表数据量比较大的,响应时间会比较长,就需要设置等待时间然后去查看商详 2.定时器的作用域࿱…...
Spring Boot 请求/actuator/beans 无法访问 返回404
问题复现 在保证项目加入了spring-boot-starter-actuator依赖,并成功启动后。通过浏览器进行访问,返回如下图结果: 问题排查 1. 查看日志 从日志中可以看到基于路径’/actuator’下只暴露了一个端点 2. 访问http://localhost:8080/actua…...
AVD联网
AVD联网: 解决Android Studio模拟器无法联网_android studio模拟器没有网络-CSDN博客 挺好的,就是访问网站的时候只能用ip,而不能用域名。 AVD设置代理: 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 : 小红牛 # 微信公众号:wdPython内置类型 逻辑值检测 布尔运算 — and, or, not 比较运算 数字类型 — int, float, complex 布尔类型 - bool 迭代器类型 序列类型 — list, tuple, range 文本…...
基于ssm的校园办公室报修管理系统
基于ssm的校园办公室报修管理系统 摘要 基于SSM的校园办公室报修管理系统是一个现代化的、高效的报修平台,它能够帮助校园内的教职工和学生更方便、更快捷地提交和处理报修请求。该系统基于Spring、SpringMVC和MyBatis(简称SSM)开发ÿ…...
1Panel 升级 Halo报错
1Panel 升级 Halo报错 通过 1panel 升级 2.10.0 -> 2.10.1 后启动失败,出现 No value found for protocol 错误, 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的劳务外包管理系统的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
