【二】Django小白三板斧
今日内容
-
静态文件配置
-
request对象方法初识
-
pycharm链接数据库(MySQL)
-
django链接数据库(MySQL)
-
Django ORM简介
-
利用ORM实现数据的增删查改
【一】Django小白三板斧

- HttpResponse
- 返回字符串类型的数据
- render
- 返回HTML文件
- redirect
- 重定向
【补充】django自带重启功能
- 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢
【项目的前提条件】
# settings.py
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,"app01/templates") ],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
首先,让我们创建 app01 应用程序的 urls.py 文件。在你的项目中,应该有一个名为 urls.py 的主 URL 配置文件,其中包含了所有应用程序的 URL 配置。在这个文件中,你需要添加一个路径配置来引入 myapp 应用程序的 URL 配置。
# 项目的 urls.py 文件
from django.urls import include, pathurlpatterns = [# 其他路径配置...path('app01/', include('app01.urls')),
]
接下来,创建 app01 应用程序的 urls.py 文件,其中包含了路径配置和视图函数的映射。
# myapp 的 urls.py 文件
from django.urls import path
from . import viewsurlpatterns = [path('', views.index_view, name='index'),path('home/', views.home_view, name='home'),path('redirect/', views.redirect_view, name='redirect'),
]
在 app01 应用程序的 views.py 文件中,你可以编写视图函数来处理每个路径的请求。
# app01 的 views.py 文件
from django.shortcuts import render, HttpResponse, redirectdef index_view(request):return HttpResponse('Hello, world!')def home_view(request):return render(request, 'login_success.html')def redirect_view(request):return redirect('/app01/home/')
【二】静态文件
我们将html文件默认都凡在templates文件夹下
我们将网站所使用的静态文件默认都放在static文件夹下
【1】什么是静态文件
-
前端已经写好了的 能够直接调用使用的文件
- 网站写好的js文件
- 网站写好的css文件
- 网站写好的图片文件
- 第三方前端框架
- …
- 拿来就可以直接使用的
-
django默认是不会自动帮你创建static文件夹 需要你自己手动创建
-
一般情况下我在static文件夹内换回做进一步的划分处理
- –static
- –js
- –css
- –img
- 其他的第三方文件
- –static
-
在浏览器中输入url能够看到对应的资源
-
是因为后端提前开设了该资源的借口
-
如果访问不到资源 说明后端没有开设该资源的借口
-
http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css
【二】在Django配置静态文件
- 在Django的默认静态文件渲染系统中
- 默认的文件访问位置为当前APP的静态文件
-
在settings.py文件中
-
# 默认的静态文件配置 STATIC_URL = '/static/' -
在app 下创建一个static文件夹
- 创建一个子分类文件夹
-
访问静态文件
http://127.0.0.1:8000/static/avatar/1.jpg -
在页面上可以渲染出当前静态文件
第一种
- 如果想访问到项目目录下指定文件夹内容的静态文件
因为我将static文件夹放在个django文件是同一级文件夹下因此我的默认的配置文件如下:
# 默认的静态文件配置
STATIC_URL = '/static/'# 添加配置条件
STATICFILES_DIRS = [os.path.join(BASE_DIR, r'F:\PicGo\djangoProject\static'),
]
(http://127.0.0.1:8000/static/photos/21.jpg)

第二种
# 第一步
# 在前端页面中的第一行
# {% load static %}# 第二步:使用静态文件
# {% static 'static/phots/21.jpg' %}
<!-- login.html -->
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
{# <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>#}<link href="{% static 'js/bootstrap-theme.min.css' %}" rel="stylesheet">{# <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>#}
</head>
<body>
<h1 class = 'text-center'>登陆</h1>
<div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><form action="" method="post"><p>username:<input type="text" name="username" class="form-control"></p><p>password:<input type="password" name="password" class="form-control"></p><input type="submit" class="bth btn-block"></form></div></div>
</div>
</body>
</html>
-
<form action="" method="post"> -
form表单action参数
- 不写 默认当前所在的url提交是数据
- 全写 指名姓名
- 只写后缀 /login/
在前期我们使用Django提交post请求的时侯 需要取配置文件中注释掉一行代码
# <!-- 在settings.py文件中 -->
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',
]

【三】request对象方法
【1】request.method
- 获取到当前请求方式
【2】request.GET
- 获取到get请求携带的请求参数
# 请求参数携带在路由地址上以键值对的形式携带
http://127.0.0.1:8000/register/?username=&password=&hobby=music&hobby=sport&hobby=swim
- request.GET.get(key)
# 获取键值对数据(单个的键值对数据)
- request.GET.getlist(key)
# 获取GET请求携带的列表数据(一个键多个值的数据)
# hobby=music&hobby=sport&hobby=swim
【3】request.POST
- 获取POST请求携带的请求体
# 请求数据携带在请求体重,并且在路由地址上看不到
- form表单提交 post 请求时会报错
# 解决办法:注释掉 middleware中带有 CSRF 参数的中间件
# CSRF verification failed. Request aborted.
【三】pycharm链接数据库(MySQL)
-
三个位置查数据库相关的
- 右侧上方的database
- 左下方database
- 配置里面的plugins插件搜索安装
- 不行就卸载安装
pycharm可以充当很多款数据库软件的客户端
【配置】
要在 Django 中连接 MySQL 数据库,你需要进行以下步骤:
-
确保你已经安装了 MySQL 数据库,并且知道数据库的连接信息,例如主机名、用户名、密码和数据库名称。
-
在 Django 的项目设置文件
settings.py中,找到DATABASES配置项,并进行如下修改:
# settings.pyDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'bai', # 你的数据库名字'USER': 'root', # 一般来说就是root'PASSWORD': '12186', # 忘了就要百度'HOST': '127.0.0.1', # 默认为 'localhost''PORT': '3303', # 默认为 '3306' }
}
请将 'your_database_name'、'your_username'、'your_password'、'your_host' 和 'your_port' 替换为你的 MySQL 数据库的实际连接信息。
你直接使用会出现以下错误

这个错误提示是在 Django 中连接 MySQL 数据库时出现的。它指出无法加载 MySQLdb 模块,可能是因为没有安装 mysqlclient。
- 如果你还没有安装
mysqlclient库,请在终端中运行以下命令安装:
# pip install mysqlclient
这是一个用于连接 MySQL 数据库的 Python 库。
- 安装这个mysqlclient库需要运气
- win 电脑给力一点,安装就不会报错
- mac系统安装 mysqlclient 费劲
win报错解决办法
- 访问 whl文件的官网
- https://pypi.org/project/mysqlclient/#files
# pip install mysqlclient-2.2.4-cp310-cp310-win_amd64.whl
- 运行数据库迁移命令,以创建 Django 所需的数据库表:
# python manage.py migrate
这将根据你的 models.py 文件创建数据库表。
现在,你的 Django 项目应该能够连接到 MySQL 数据库了。你可以在你的应用程序的 models.py 文件中定义模型,并使用 Django 的 ORM (对象关系映射) 功能与数据库交互。
以下是一个简单的示例,展示了如何在 Django 中连接 MySQL 数据库和定义一个简单的模型:
# models.pyfrom django.db import modelsclass Book(models.Model):title = models.CharField(max_length=100)author = models.CharField(max_length=100)publication_date = models.DateField()def __str__(self):return self.title
在这个示例中,我们创建了一个名为 Book 的模型,它有三个字段:title、author 和 publication_date。__str__ 方法定义了模型对象的字符串表示形式。
确保在定义模型后运行以下命令,以将模型更改应用于数据库:
# python manage.py makemigrations
# python manage.py migrate
【四】Django链接MySQL
【1】Django自带的数据
- 在 settings.py 文件中有一个配置项就是配置数据库的
- 但是Django默认的数据库是sqlite3数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3', # 修改sqlites'NAME': BASE_DIR / 'db.sqlite3',}
}


- 将上图中黄色警告缺少驱动程序文件下载
- 就是傻瓜模式

【五】Django中的ORM操作
【1】什么是ORM
ORM. 对象就是关系映射
- ORM 的基本思想是将数据库表映射为对象
【2】作用
能够让一个不用sql语句的小白也能通过python 面向对象的代码简单快捷的操作数据库不知之处:
- 封装程度太高
- 有时候sql语句的效率偏低
- 需要你自己写SQL语句
# 类 表
# 对象 记录
# 对象属性 记录某一个字段对应的值
【3】ORM 的优点包括:
- 简化数据库操作:ORM 提供了高级的抽象层,使开发人员无需直接编写复杂的 SQL 查询语句,而是使用简单的方法和语法来执行数据库操作。
- 提高开发效率:ORM 可以减少开发人员的工作量,提供了便捷的方式来处理数据库,减少了手动编写 SQL 语句的时间和错误。
- 跨数据库支持:ORM 框架通常支持多种数据库后端,使开发人员能够在不同的数据库系统之间切换,而无需更改大量的代码。
- 数据库独立性:通过使用 ORM,应用程序的数据库访问逻辑与具体的数据库实现解耦,使得应用程序更容易迁移到不同的数据库系统上。
- 更好的可维护性:ORM 提供了一种结构化的方式来管理数据库操作,使得代码更易于理解、维护和扩展。
【4】建表操作
【1】定义模型表
- 在自己的应用程序的文件如:app01下面的models.py文件中定义模型表
from django.db import models# Create your models here.# 建表 : 数据库中的表映射为Python中的类
class User(models.Model):# 数据库中的字段映射为Python中的属性# 定义一个用户名 : 字符串类型 长度 # MySQL中字符串类型的字段 : char varchar(32)# CharField :字符串类型的字段# max_length :最大长度# verbose_name : 注释# help_text : 解释username = models.CharField(max_length=32, verbose_name="用户名", help_text="这是一个用户名字段")password = models.CharField(max_length=32)# IntegerField : 相当于MySQL中的 int 字段age = models.IntegerField()# FloatField : 相当于MySQL数据库中的 float 字段salary = models.FloatField()
一旦你定义了模型,你可以使用 Django 的数据库迁移工具来创建数据库表。迁移工具会根据模型的定义自动生成相应的 SQL 语句,并将其应用到数据库中。你可以使用以下命令进行数据库迁移:
python manage.py makemigrations # 生成迁移文件
python manage.py migrate # 应用迁移文件,创建数据库表
这样,Django ORM 将会根据你的模型定义创建一个名为 User 的数据库表,该表包含了 username、password 、salary和 age 四个个字段。

默认数据库
- 在 settings.py 文件中有一个配置项就是配置数据库的
- 但是Django默认的数据库是sqlite3数据库
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
指定数据库
- 修改 settings.py 中的数据库配置项
- 模版
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',# 数据库名字'NAME': "", # 如 bai# 数据库用户名"USER": "", # 一般是 root# 数据库密码"PASSWORD": "", # 忘了就拜拜# 数据库 IP,本地默认是127.0.0.1/localhost"HOST": "localhost",# 数据库端口"PORT": 3306, # 可以查看自己数据库文件夹中的min文件# 数据库编码"CHARSET": "utf8mb4",}
}
【2】指定MySQL数据库报错
先创建一个新的数据库

- django 默认使用mysqldb模块链接mysql
- 但是该模块的兼容性不好,需要手动修改为pymysql链接
(1)解决办法一:猴子补丁
- 在项目下的
__init__或者任意的应用名下的__init__文件中书写一下代码
import pymysqlpymysql.install_as_MySQLdb()
(2)解决办法二:下载第三方模块
- 直接安装
pip install mysqlclient
- 运气好不会报错,但是运气不好就会报错
(3)Win报错解决办法(下载whl文件)
- https://pypi.org/project/mysqlclient/#files

- 下载对应的whl版本文件
- 安装(切换到指定目录下执行 pip 安装命令)
pip install pip mysqlclient-2.2.4-cp310-cp310-win_amd64.whl
【3】ORM操作之字段操作
https://docs.djangoproject.com/en/3.2/topics/db/
这个是django数据库语句的官网
【1】字段属性
(1)允许为空
- 在定义模型类的相应字段时,可以为该字段添加
null=True属性以允许其值为None或空字符串。
class MyModel(models.Model):name = models.CharField(max_length=50, null=True) # 允许name字段为空
(2)指定默认值
- 设置字段的默认值可通过在字段定义时附加
default参数实现。例如,给字段age设置默认值为 18
class MyModel(models.Model):age = models.IntegerField(default=18) # 默认年龄为18岁
【2】字段增加
- 要在 Django 模型表中增加新的字段,只需在相应的 Model 类中添加新字段及其类型和所需属性。
from django.db import modelsclass MyModel(models.Model):name = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True) # 新增一个自动记录创建时间的datetime字段is_active = models.BooleanField(default=True) # 新增一个布尔类型字段,默认激活状态为True
【3】字段删除
- 要从模型表中删除字段,请直接在 Model 类中注释掉该字段或者将其完全移除。
- 不过,在生产环境中删除字段前请确保不会影响现有数据,因为这可能导致数据丢失或结构不一致。
class MyModel(models.Model):name = models.CharField(max_length=50) created_at = models.DateTimeField(auto_now_add=True) is_active = models.BooleanField(default=True) # 移除is_removed字段
【补充】
- 每次修改关于数据库字段的操作时,都要执行数据库的迁移相关操作
python manage.py makemigrations
python manage.py migrate
【六】ORM操作之数据操作
【1】增加
(1)语法
模型表名.objects.create(字段名=字段值)
(2)示例
new_instance = MyModel.objects.create(name="张三", age=25,email="zhangsan@example.com"
)
【2】查询
(1)语法
- 获取到当前表中的全部数据
模型表名.objects.all()
- 根据指定条件筛选数据
# 方式一
模型表名.objects.get(筛选字段名=筛选字段值)# 方式二
模型表名.objects.filter(筛选字段名=筛选字段值)
- 去除指定条件的数据
模型表名.objects.exclude(筛选字段名=筛选字段值)
(2)示例
# 获取表中所有数据
all_records = MyModel.objects.all()# 根据特定条件筛选数据(方式一)
filtered_records = MyModel.objects.get(name="张三")# 根据特定条件筛选数据(方式二)
# 查询包含"张"的所有name
filtered_records = MyModel.objects.filter(name__contains="张") # 去除满足指定条件的数据
# 过滤掉所有年龄小于18岁的记录
excluded_records = MyModel.objects.exclude(age__lt=18)
【3】更改
(1)语法
# 方式一:先查询直接修改
模型表名.objects.filter(筛选字段名=筛选字段值).update(修改字段名=修改字段值)# 方式二:先查询后修改
obj = 模型表名.objects.get(筛选字段名=筛选字段值)
obj.修改字段名=修改字段值
obj.save()
(2)示例
# 可以使用.filter() 和 .update() 方法批量更新符合条件的数据
# 所有年龄为25的记录年龄改为26
MyModel.objects.filter(age=25).update(age=26) # 更新已有记录的值,可先通过查询获取对象实例后调用 .save() 方法
instance_to_update = MyModel.objects.get(name="张三")
instance_to_update.age = 26
instance_to_update.save()
【4】删除
(1)语法
# 方式一:删除需要先查询直接删除
模型表名.objects.filter(筛选字段名=筛选字段值).delete()# 方式二:删除需要先查询再删除
instance_to_delete = MyModel.objects.get(筛选字段名=筛选字段值)
instance_to_delete.delete()
(2)示例
# 删除满足特定条件的记录,通常先通过查询获取对象实例再调用 .delete() 方法
instance_to_delete = MyModel.objects.get(name="张三")
instance_to_delete.delete()# 可以使用 .filter() 方法批量删除
MyModel.objects.filter(name="李四").delete() # 删除所有名字为"李四"的记录
常用的操作语法:
在Django中,ORM(对象关系映射)提供了一种便捷的方式来执行数据库操作。ORM允许您使用Python代码而不是SQL语句来操作数据库。下面是一些常见的ORM操作语法:
- 创建对象:
new_object = MyModel(field1='Value 1', field2=123)
new_object.save()
- 读取对象:
all_objects = MyModel.objects.all() # 获取所有记录# 根据条件过滤记录
filtered_objects = MyModel.objects.filter(field1='Value 1')# 获取单个记录
single_object = MyModel.objects.get(pk=1)
- 更新对象:
object_to_update = MyModel.objects.get(pk=1)
object_to_update.field1 = 'New Value'
object_to_update.save()
- 删除对象:
object_to_delete = MyModel.objects.get(pk=1)
object_to_delete.delete()
- 聚合操作(Aggregation):
from django.db.models import Count, Sum, Avg# 计算记录总数
count = MyModel.objects.count()# 对字段进行求和
total = MyModel.objects.aggregate(Sum('field2'))# 对字段进行平均值计算
average = MyModel.objects.aggregate(Avg('field2'))
- 排序:
# 按字段升序排序
sorted_objects = MyModel.objects.order_by('field1')# 按字段降序排序
sorted_objects = MyModel.objects.order_by('-field1')
- 关联查询:
class RelatedModel(models.Model):my_model = models.ForeignKey(MyModel, on_delete=models.CASCADE)# 获取关联模型的记录
related_objects = RelatedModel.objects.select_related('my_model')# 获取关联模型的记录并预先加载
related_objects = RelatedModel.objects.prefetch_related('my_model')
这些是常见的ORM操作语法示例。Django的ORM还提供了更多高级的查询和操作方法,如跨表查询、事务管理等。https://docs.djangoproject.com/en/3.2/topics/db/
ggregation):
from django.db.models import Count, Sum, Avg# 计算记录总数
count = MyModel.objects.count()# 对字段进行求和
total = MyModel.objects.aggregate(Sum('field2'))# 对字段进行平均值计算
average = MyModel.objects.aggregate(Avg('field2'))
- 排序:
# 按字段升序排序
sorted_objects = MyModel.objects.order_by('field1')# 按字段降序排序
sorted_objects = MyModel.objects.order_by('-field1')
- 关联查询:
class RelatedModel(models.Model):my_model = models.ForeignKey(MyModel, on_delete=models.CASCADE)# 获取关联模型的记录
related_objects = RelatedModel.objects.select_related('my_model')# 获取关联模型的记录并预先加载
related_objects = RelatedModel.objects.prefetch_related('my_model')
这些是常见的ORM操作语法示例。Django的ORM还提供了更多高级的查询和操作方法,如跨表查询、事务管理等。https://docs.djangoproject.com/en/3.2/topics/db/
相关文章:
【二】Django小白三板斧
今日内容 静态文件配置 request对象方法初识 pycharm链接数据库(MySQL) django链接数据库(MySQL) Django ORM简介 利用ORM实现数据的增删查改 【一】Django小白三板斧 HttpResponse 返回字符串类型的数据 render 返回HTML文…...
MyBatis的基本应用
源码地址 01.MyBatis环境搭建 添加MyBatis的坐标 <!--mybatis坐标--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!--mysql驱动坐…...
Day80:服务攻防-中间件安全HW2023-WPS分析WeblogicJettyJenkinsCVE
目录 中间件-Jetty-CVE&信息泄漏 CVE-2021-34429(信息泄露) CVE-2021-28169(信息泄露) 中间件-Jenkins-CVE&RCE执行 cve_2017_1000353 CVE-2018-1000861 cve_2019_1003000 中间件-Weblogic-CVE&反序列化&RCE 应用金山WPS-HW2023-RCE&复现&上线…...
使用generator实现async函数
我们先来看一下async函数是怎么使用的 const getData (sec) > new Promise((resolve) > {setTimeout(() > resolve(sec * 2), sec * 1000);})// aim to get this asycnFun by generator async function asyncFun() {const data1 await getData(1);const data2 awa…...
go并发请求url
sync.WaitGroup写法 package mainimport ("database/sql""fmt""net/http""sync""time"_ "github.com/go-sql-driver/mysql" )func main() {//开始计时start : time.Now()//链接数据库,用户名…...
刷题之Leetcode704题(超级详细)
704. 二分查找 力扣题目链接(opens new window)https://leetcode.cn/problems/binary-search/ 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标&am…...
leetcode热题100.前k个高频元素
作者:晓宜 🌈🌈🌈 个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者 ❤️❤️❤️ 你的关注是我前进的动力😊 Problem: 347. 前 K 个高频元…...
LangChain Demo | Agent X ReAct X wikipedia 询问《三体》的主要内容
背景 LangChain学习中,尝试改了一下哈里森和吴恩达课程当中的问题,看看gpt-3.5-turbo在集成了ReAct和wikipedia后,如何回答《三体》的主要内容是什么这个问题,当然,主要是为了回答这问题时LangChain内部发生了什么。所…...
Revit 2025新功能一览~
Hello大家好!我是九哥~ Revit2025已经更新,安装后,简单试了下,还是挺不错的,流畅度啊,新功能啊,看来还是有听取用户意见的,接下来就简单看看都有哪些新功能。 好了,今天的…...
Head First Design Patterns -代理模式
什么是代理模式 代理模式为另一个对象提供替身或者占位符,以便控制客户对对象的访问,管理访问的方式有很多种。例如远程代理、虚拟代理、保护代理等。 远程代理:管理客户和远程对象之间的交互。 虚拟代理:控制访问实例化开销大的对…...
第十三题:天干地支
题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(w)、己&a…...
8000预算可以购买阿里云服务器配置整理
一个月8000元预算如何选择阿里云服务器配置?八千预算可选的阿里云服务器配置相当高了,这个预算可以购买阿里云企业级独享型云服务器,至少8核以上的配置,这个预算可以支持复杂、高负载或大规模的业务需求。阿里云服务器网整理8000元…...
游戏APP如何提高广告变现收益的同时,保证用户留存率?
APP广告变现对接第三方聚合广告平台主要通过SDK文档对接,一些媒体APP不具备专业运营广告变现的对接能力和资源沉淀,导致APP被封控,设置列入黑名单,借助第三方聚合广告平台进行商业化变现是最佳选择。#APP广告变现# 接入第三方平台…...
Linux ulimit命令教程:如何查看和设置系统资源限制(附实例详解和注意事项)
Linux ulimit命令介绍 ulimit是一个内置的Linux shell命令,它允许查看或限制单个用户可以消耗的系统资源量。在有多个用户和系统性能问题的环境中,限制资源使用是非常有价值的。 Linux ulimit命令适用的Linux版本 ulimit命令在所有主流的Linux发行版中…...
(delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
8.5.2 封闭类和Final方法 如前所述,Java 采用非常动态的方法,默认情况下采用延迟绑定(或虚函数)。因此,Java 语言引入了一些概念,如不能继承的类(封闭类)和不能在派生类中覆盖的方法…...
vue3从精通到入门12:vue3的生命周期和组件
生命周期: 生命周期钩子主要包括: beforeCreate:组件实例被创建之前调用。在这个阶段,组件的 props 和 data 还未被初始化。created:组件实例创建完成后调用。在这个阶段,组件的 props 和 data 已经被初始…...
力扣热题100_链表_21_合并两个有序链表
文章目录 题目链接解题思路解题代码 题目链接 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例…...
探索未来智慧酒店网项目接口架构
在数字化时代,智慧酒店已成为酒店业发展的重要趋势之一。智慧酒店网项目接口架构作为支撑智慧酒店运营的核心技术之一,其设计和优化对于提升用户体验、提高管理效率具有重要意义。本文将深入探讨智慧酒店网项目接口架构的设计理念和关键要素。 ### 智慧…...
os模块篇(十三)
文章目录 os.mknod(path, mode0o600, device0, *, dir_fdNone)os.major(device, /)os.minor(device, /)os.makedev(major, minor, /)os.pathconf(path, name)os.readlink(path, *, dir_fdNone)os.remove(path, *, dir_fdNone)os.removedirs(name)os.rename(src, dst, *, src_di…...
【JavaEE初阶系列】——文件操作 IO 之 文件系统操作
目录 📝认识文件 🚩树型结构组织 和 目录 🎈绝对路径和相对路径 🚩文件类型 📝文件系统操作 🎈File 概述 🎈File类的使用 1. 绝对路径 vs 相对路径 2. 路径分隔符 3. 静态成员变量 4…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
