最新要闻
- 【环球报资讯】伴娘穿露肩礼服肌肉健硕画面太美不敢看 网友:真金刚芭比
- IGN给RX 7900 XTX显卡打7分:AMD性价比绝对YES
- 一加显示器X27发布:2K 165Hz屏、65W PD输出
- 观天下!小米13深度体验:补上最后一块短板!冲击高端真的要成了?
- 拒绝向SSD认输!机械硬盘每GB单价已暴跌87%:将越来越便宜
- 今日讯!雷军宣布小米13系列将很快登陆全球市场:国外用户激动坏了
- 【世界新要闻】《三体》动画播放量破1.3亿:豆瓣出现N多1星剧评
- 每日关注!奇葩!男子恋爱转账11万分手能向女方要回不 法院判决
- 动态焦点:AMD悄悄把RX 7900 XT的功耗提高了:游戏性能实测公布
- 天天快播:服!敬业新郎一边结婚一边拉业务:39元套餐送1200分钟通话、90G流量和宽带
- 世界要闻:三亚游客乘观光直升机突遇意外迫降海面:发动机断油失效
- 全球要闻:免费可商用!荣耀HONOR Sans字体来了 附下载
- 0.89元/片:KN95口罩30片26.9元大促
- 全球热文:全球首款!大上科技墨水屏显示器上架:25.3寸超大屏幕
- 当前信息:999元 小米Sound Pro太顶了:用户体验后感觉地板都在共振
- 天天看点:裸奔还是不行 Win10/11系统依然需要安全软件:免费的就行
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球快资讯:框架第三课---作业讲解(数据增删改查),django请求生命周期流程图,django路由层,反向解析
上周内容回顾
静态文件及相关配置
(资料图片仅供参考)
1.静态文件的概念简单的理解为html页面需要使用到的不经常变化的资源 css文件、js文件、img文件、第三方文件2.访问静态文件配置STATIC_URLS = "/static/"STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static") ]3.接口前缀动态匹配{% load static %}{% static "bbb/ccc/d.txt" %}
form表单相关注意事项
form标签重要属性action控制数据提交的地址!!! 三种编写方式: 什么都不写默认朝当前form表单所在页面提交 写全路径,写什么路径就朝什么路径提交 写一个路由,朝当前服务端对应的路由地址提交!!method控制提交的方法 两种方法 默认是get网络请求方式get 朝服务端请求数据并且可以携带一些额外的不敏感的条件(大小有限制2kb左右) URL?xxx=yyy&ooo=ppppost 朝服务端提交数据 也可以携带数据并且数据是放在请求体里面的(大小没有限制) 请求体
request对象方法
request.method获取当前请求的请求方法 结果是纯大写的字符串 GET、POST
request.GET获取URL问号后面携带的数据结果是一个QueryDict拥有字典的特性request.GET.get()值列表最后一个数据值request.GET.getlist()整个值列表
request.POST获取post请求请求体里面的数据结果也是一个QueryDict拥有字典的特性request.POST.get()值列表最后一个数据值request.POST.getlist()整个值列表
* pycharm连接数据库```python1.database选项2.对应的数据库驱动
django连接数据库
1.django默认自带sqlite3小型数据库2.我们可以指定其他数据库 比如MySQL3.配置文件中需要修改配置 DATABASESDATABASES = { # "default": { # "ENGINE": "django.db.backends.sqlite3", # "NAME": os.path.join(BASE_DIR, "db.sqlite3"), # } "default": { "ENGINE": "django.db.backends.mysql", "NAME": "day51", "HOST": "127.0.0.1", "PORT": "3306", "USER": "root", "PASSWORD": "222", "CHARSET": "utf8", }
}1.添加相关配置mysql、NAME、HOST、PORT、USER、PASSWORD、CHARSET2.需要下载mysqlclient模块(如果是django1.X版本可以用pymysql)
* orm简介对象关系映射(Object Relational Mapping)```python对象关系映射1.优势简单方便快捷2.劣势效率可能会低
数据库迁移命令
1.models.py中编写了与数据库相关的代码2.将代码操作记录下来 migrations目录python38 manage.py makemigrations3.将操作真正同步到数据库中python38 manage.py migrate"""首次创建django会额外创建很多内部需要用到的表 针对程序员自己创建的表名在表名前面加上应用前缀用于区分多个应用表名可能冲突的情况"""
orm基本操作
models.UserInfo.objects.create() # insert intomodels.UserInfo.objects.filter() # wheremodels.UserInfo.objects.filter().update() # updatemodels.UserInfo.objects.filter().delete() # delete from
models.表名.objects.creat()models.表名.objects.filter()models.表名.objects.filter().update()models.表名.objects.filter().delete()
今日内容概要
- 作业讲解(数据增删改查)
- django请求生命周期流程图
- django路由层
- python虚拟环境(跳过)
- 反向解析
- 路由分发
- 名称空间
今日内容详细
准备工作
先pycharm连接数据库
settings里面注掉一行代码!!!防止post请求报错!!MIDDLEWARE = [# "django.middleware.csrf.CsrfViewMiddleware",]TEMPLATES里面路径重新写一下"DIRS": [os.path.join(BASE_DIR, "templates")]
django连接数据库 settings里面也要配置一下,如果是用的django自带的数据库可以不用改DATABASES = {# "default": {# "ENGINE": "django.db.backends.sqlite3",# "NAME": os.path.join(BASE_DIR, "db.sqlite3"),"default": {"ENGINE": "django.db.backends.mysql","NAME": "day51", # 写你要操作的库名"HOST": "127.0.0.1","PORT": "3306","USER": "root","PASSWORD": "222","CHARSET": "utf8",}}
可视化界面之数据增删改查
针对数据对象主键字段的获取可以使用更加方便的 obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看"""{# 前端需要获取数据,并且发送给后端,目前只有form表单能实现!!#}form表单中能够触发调剂动作的按钮只有两个"""1.数据展示功能开设接口、获取数据、传递页面、展示数据获取user表里面所有的数据!!利用模板语法传递数据到html页面并完成处理,最终返回浏览器展示!!----------------------------------------------------------------------------------------------------2.数据添加功能开设接口、获取数据、发送数据、校验数据、录入数据、重定向先返回一个获取新增用户数据的html页面根据不同的请求方式做不同的处理获取用户相关数据一些小判断(不如用户名密码不能为空,)筛选用户名是否已存在!如果用户名也没用重复就可以往数据库添加了一条数据了!!数据添加完了后,重定向到数据展示页!!!----------------------------------------------------------------------------------------------------3.数据编辑功能开设接口、后端如何区分所要编辑的数据(问号携带参数)、后端获取用户数据、前端展示默认数据、获取用户并完成更新-------{# a标签的href=网址 点击a标签就会跳转到该网址去!就是朝该网址发了一个get请求!!!#}get请求有想加点东西,在路由的后面通过问号?的方式携带一些数据!!-------编辑页展示出来的时候,需要在后端提前将拿到的用户数据,然后给两个input框加默认值,这样就展示出来的时候input框里面就有用户想要改的数据了!!!这样用户就比较方便了!!!给input框添加value属性性!!!--------获取用户想要编辑的数据主键值根据主键值去数据库查找筛选获取对应的数据根据拿到的数据返回一个编辑数据的页面,并且该页面上需要提前展示出原来的数据!!根据不同的请求处理不同逻辑,先对获取的前端post请求信息来点小判断!!用户在编辑页面编辑的信息提交后,经过判断后确定没问题后,开始更新数据库里面对应的信息数据更新完了后,重定向到数据展示页!!!----------------------------------------------------------------------------------------------------4.数据删除功能开设接口、问号携带参数、删除二次确认获取用户想要编辑的数据主键值在html页面利用对删除按钮的点击事件触发确认框,并根据返回值,确认用户到底想不想删,如果不想删,利用jQuery事件的return false取消掉a标签自身的点击跳转到删除视图函数的功能,这样就删不成数据了!!!根据主键值去数据库查找筛选获取对应的数据数据更新完了后,重定向到数据展示页!----------------------------------------------------------------------------------------------------
.
整体全部的代码!!!
views.py 文件代码
from django.shortcuts import render, HttpResponse, redirectfrom app01 import models# Create your views here.def user_list_func(request): # 1.获取user表里面所有的数据展示到html页面上!! user_data = models.Users.objects.filter() # 查所有数据 列表套字典或者说列表套对象 Queryset [对象1,对象2,] # 2. 利用模板语法传递数据到html页面并完成处理,最终返回浏览器展示 return render(request, "userList_page.html", {"user_data": user_data}) # 返回html页面,并将列表也传给html页面!!!----------------------------------------------------------------------------------------------------def user_add_func(request): # 2.根据不同的请求方式做不同的处理 if request.method == "POST": # 3.获取用户相关数据 username = request.POST.get("username") # 拿前端post请求提交的数据 user_age = request.POST.get("age") # 4.一些小判断(不如用户名密码不能为空,) if len(username) == 0 or len(user_age) == 0: return HttpResponse("用户名年龄不能为空!") # 5.筛选用户名是否已存在! res = models.Users.objects.filter(name=username) if res: return HttpResponse("用户名已存在!") # 6. 如果用户名也没用重复就可以往数据库添加了一条数据了!! models.Users.objects.create(name=username, age=user_age) # 7. 数据添加完了后,重定向到数据展示页!!! return redirect("/user_list/") # return HttpResponse("添加用户数据") # 1. 先返回一个获取新增用户数据的html页面 return render(request, "userAdd_page.html")----------------------------------------------------------------------------------------------------def user_edit_func(request): # return HttpResponse("用户数据编辑") # 1.获取用户想要编辑的数据主键值 target_edit_id = request.GET.get("edit_id") # 4. 根据不同的请求处理不同逻辑 if request.method == "POST": username = request.POST.get("username") # 拿前端post请求提交的数据 user_age = request.POST.get("age") if len(username) == 0 or len(user_age) == 0: return HttpResponse("用户名年龄不能为空!") # 5. 用户在编辑页面编辑的信息提交后,经过判断后确定没问题后,开始更新数据库里面对应的信息 models.Users.objects.filter(pk=target_edit_id).update(name=username, age=user_age) # 6. 数据更新完了后,重定向到数据展示页!!! return redirect("/user_list/") # 2.根据主键值去数据库查找筛选获取对应的数据 target_edit_obj = models.Users.objects.filter(pk=target_edit_id)[0] # 注意filter拿到的是Queryset是列表套对象所以要索引0才能拿到对象 # 3.根据拿到的数据返回一个编辑数据的页面,并且该页面上需要提前展示出原来的数据!! return render(request, "userEdit_page.html", {"target_edit_obj": target_edit_obj})----------------------------------------------------------------------------------------------------def user_delete_func(request): # return HttpResponse("删除数据") # 1.获取用户想要编辑的数据主键值 target_edit_id = request.GET.get("delete_id") # 2.根据主键值去数据库查找筛选获取对应的数据,然后删除 target_edit_obj = models.Users.objects.filter(pk=target_edit_id).delete() # 3.数据更新完了后,重定向到数据展示页!!! return redirect("/user_list/")
.
urls.py 文件代码
from django.contrib import adminfrom django.urls import pathfrom app01 import viewsurlpatterns = [ path("admin/", admin.site.urls), # 访问用户数据的接口 path("user_list/", views.user_list_func), # 添加用户数据的接口 path("user_add/", views.user_add_func), # 编辑用户数据的接口 path("user_edit/", views.user_edit_func), # 删除用户数据的接口 path("user_delete/", views.user_delete_func),]
.
models.py 文件代码
from django.db import models# Create your models here.class Users(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() def __str__(self): return "用户对象:%s"% self.name# 此处写个魔法方法,当我们打印对象的时候会触发它执行,作用就是能让我在打印对象的时候看下对象的内容,# 就是为了便于对象打印之后查看,不影响数据库,所以不需要执行数据库迁移命令!!# python38 manage.py makemigration# python38 manage.py migrate
.
三个html页面
userlist_pagehtml
Title <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script> {% load static %} <script src="{% static "bootstrap-3.4.1-dist/js/bootstrap.min.js" %}"></script> <script> $(".delBtn").click(function () { let res = confirm("你确定要删除吗???") if (res){}else{return false} }) {#给删除按钮加一个点击事件,触发确认框,根据确认框的返回值,来决定是否要删除数据#} {#如果返回值是true说明用户确实要删,什么操作都不用做,删除函数会自动删!!#} {#如果返回值是false说明用户不想删了,此时利用jQuery事件先执行绑定的事件然后return false取消掉自身的功能#} {#这样点a标签就只能触发绑定的单击事件,但是a标签自身的点击跳转到对应页面的功能就被取消掉了,就不执行删除函数了!#} </script>{# a标签的href=网址 点击a标签就会跳转到该网址去!就是朝该网址发了一个get请求!!!#}
useradd_pagehtml
Title <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script> {% load static %} <script src="{% static "bootstrap-3.4.1-dist/js/bootstrap.min.js" %}"></script> 数据添加页
{# 前端需要获取数据,并且发送给后端,目前只有form表单能实现!!#}
.
useredit_pagehtml
Title <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script> {% load static %} <script src="{% static "bootstrap-3.4.1-dist/js/bootstrap.min.js" %}"></script> 数据编辑页
.{# a标签的href=网址 点击a标签就会跳转到该网址去!就是朝该网址发了一个get请求!!!#}..form表单action后面不写默认朝当前页面提交数据!!..可以看出每一个a标签都带了额外的数据了!当我们点击按钮跳转到编辑页面的时候,网址路由的后面是跟了后缀的,这样我们用request.GET()就能拿到问号后面的信息,从而后端就知道你要编辑那条数据了!!!..可以看出随机点一个用户编辑按钮后,跳转的编辑页面,自动已经将用户数据放input框里面了!!.......
django请求生命周期流程图
这个图很重要 无论是学习阶段还是复习阶段django默认的网关接口 能够承受并发量很低 开发阶段用的!!!wsgiref web服务器网关接口模块 主要作用:帮我们解析http请求数据格式,帮我们处理请求数据的格式!!!uwsgi网关接口模块,程序上线之后用的!!!两个模块都是基于WSGI协议开发的学习流程路由层、视图层、模板层、模型层、组件、BBS项目
...
django路由层
1.针对路由匹配urls.py文件里面django2.X及以上 path()第一个参数写什么就匹配什么django1.X path()第一个参数是 正则表达式无论什么版本django都自带加斜杠后缀的功能 也可以取消配置文件中 APPEND_SLASH = Falseslash 劈 砍 斜线--------------------------------------------------------------------------------------------------
.
2.转换器 将对应位置匹配到的数据转化成固定的数据类型!!!
正常情况下很多网站都会有很多相似的网址 如果我们每一个都单独开设路由不合理django2.X及以上版本路由动态匹配有转换器(五种) 记前两个就行了!!!----------------------------------------------------------------------------------------------------------------------------------------str:匹配除路径分隔符外的任何非空字符串。int:匹配0或者任意正整数。slug:匹配任意一个由字母或数字组成的字符串。uuid:匹配格式化后的UUID。path:能够匹配完整的URL路径 ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)--------------------------------------------------------------path("index//", views.index_func)在用转化器捕捉一些数据的时候,index/后面所匹配到的内容会当成关键字参数传给后面的视图函数!!!打个比方我输入了网址:http://127.0.0.1:8000/index/aaaa/会接收到aaaa并转为字符串,以关键字产生传给views.index_func函数!!!index_func(实参request,info="转换器匹配到的类型转换之后的内容")由于我们的函数只定义了一个位置参数,并且是框架拿到请求数据整理好直接传给函数的我们并没有在函数定义阶段定于关键字参数,所以转换器得到的字符串,没法传给函数!!!路由这样写的目的是:比如接口前缀index/将来不知道要接什么后缀,但是我就想让index/后面接后缀,就可以这样用!!!---------------------------------------# 转换器 将对应位置匹配到的数据转换成固定的数据类型# index_func(实参request,info="转换器匹配到的类型转换之后的内容")path("index//", views.index_func)--------------------------------------------------------------------------------------------------path("index///", views.index_func)同理如果再加一个转换器!那么对应的自定义函数就要在加一个id参数进去,才能不报错这时候http://127.0.0.1:8000/index/aaaa/12235456/函数里面info参数就拿到了aaaa id参数就拿到了12235456# index_func(实参request对象,info="转换器匹配到的类型转换之后的内容",id="转换器匹配到的类型转换之后的内容")当如如果在视图函数里面不需要用到,转换器匹配到的数据,有不写一个一个写对应的参数,就直接这样写就行了!!!def index_func(request, **kwargs):--------------------------------------------------------------------------------------------------
urlpatterns = [path("index/str:info/", views.index_func),]由于我们的函数只定义了一个位置参数,并且是框架拿到请求数据整理好直接传给函数的我们并没有在函数定义阶段定于关键字参数,所以转换器得到的字符串,没法传给函数!!!所以报错!!index_func(实参request,info="转换器匹配到的类型转换之后的内容")由于我们的函数只定义了一个位置参数,并且是框架拿到请求数据整理好直接传给函数的我们并没有在函数定义阶段定于关键字参数,所以转换器得到的字符串,没法传给函数!!!.也就是如果不想让函数报错,必须要在函数的定义阶段在括号里面加个info,才能不报错!!!...
3.正则匹配
django2.X及以上版本 urls.py 文件里面 re_path()第一个参数是正则正则匹配的特点:只要第一个正则表达式能够从用户输入的路由中匹配到数据,就算匹配成功!!!会立刻停止路由层其他的匹配,直接执行对应的视图函数只要正则表达式能够从用户输入的网址中,匹配到内容就算匹配成功,立刻触发后面的视图函数的运行!!并接受路由层的匹配!!!--------------------------------------------------------------------------------------------------路由的正则的最终版:把网址后缀的前后都限制死!!!re_path("^test/$", views.test)django1.X路由匹配使用的是url() 功能与django2.X及以上的re_path()一致from django.urls import path,re_path--------------------------------------------------------------------------------------------------
只要第一个正则表达式能够从用户输入的路由中匹配到数据就算匹配成功!!!会立刻停止路由层其他的匹配直接执行对应的视图函数路由testadd 也能被正则test 匹配上 所有就直接执行test的视图函数了!!!.也就是如果网址后缀testadd这样写,那testadd的视图函数永远执行不了!!!如何解决了?屁股后面加个斜杆就行了!!!输入网址后 http://127.0.0.1:8000/testadd django会自动给你添加一个斜杆这时候就匹配上了testadd/的路由了!!!...
4.正则匹配的无名有名分组
--------------------------------------------------无名分组re_path("^test/(\d{4})/", views.test)匹配开头是text/后面是4个数字的路由!!!会将括号内正则匹配到的内容!!!当做位置参数!!!传递给视图函数!!!正则表达式加括号就是分组!!!!如果有两个分组,函数里面就要多加两个位置参数!!!----------------------------------------------------------------------------------------------------有名分组re_path("^test/(?P\d{4})/", views.test)会将括号内正则匹配到的内容,当做关键字参数,传递给视图函数!!!注意上述的分组不能混合使用!!!----------------------------------------------------------------------------------------------------
....
反向解析
通过一个名字可以反向解析出一个结果 该结果可以访问到某个对应的路由基本使用1.路由匹配关系起别名 path("login001/", views.login, name="login_view")2.反向解析语法 html页面上模板语法{% url "login_view" %} 后端语法 reverse("login_view") 动态路由的反向解析path("func1//", views.func1_func, name="func1_view") html页面上模板语法 {% url "func1_view" "jason" %} 后端语法 reverse("func1_view", args=("嘿嘿嘿",))
作业
1.利用路由匹配与反向解析改写作业讲解2.整理今日内容及博客
-
全球快资讯:框架第三课---作业讲解(数据增删改查),django请求生命周期流程图,django路由层,反向解析
上周内容回顾静态文件及相关配置1 静态文件的概念简单的理解为html页面需要使用到的不经常变化的资源cs...
来源: -
天天热点!第一百一十二篇: JS数组Array(一)数组基本用法
好家伙,1 数组Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大...
来源: -
Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库
一:部署应用映射外部目录(持久化) 部署redis,把配置文件和数据目录映射出来 1 操作步骤(创建redis依...
来源: 全球快资讯:框架第三课---作业讲解(数据增删改查),django请求生命周期流程图,django路由层,反向解析
天天热点!第一百一十二篇: JS数组Array(一)数组基本用法
焦点快播:SpringBoot+VUE
Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库
【环球报资讯】伴娘穿露肩礼服肌肉健硕画面太美不敢看 网友:真金刚芭比
IGN给RX 7900 XTX显卡打7分:AMD性价比绝对YES
一加显示器X27发布:2K 165Hz屏、65W PD输出
观天下!小米13深度体验:补上最后一块短板!冲击高端真的要成了?
拒绝向SSD认输!机械硬盘每GB单价已暴跌87%:将越来越便宜
环球微动态丨python中的高阶函数
今日讯!雷军宣布小米13系列将很快登陆全球市场:国外用户激动坏了
【世界新要闻】《三体》动画播放量破1.3亿:豆瓣出现N多1星剧评
每日关注!奇葩!男子恋爱转账11万分手能向女方要回不 法院判决
动态焦点:AMD悄悄把RX 7900 XT的功耗提高了:游戏性能实测公布
世界热点评!FreeSWITCH学习笔记:模块
天天快播:服!敬业新郎一边结婚一边拉业务:39元套餐送1200分钟通话、90G流量和宽带
世界要闻:三亚游客乘观光直升机突遇意外迫降海面:发动机断油失效
视点!秒懂:JCTool 的 Mpsc 超高性能无锁队列 (史上最全+10W字长文)
全球要闻:免费可商用!荣耀HONOR Sans字体来了 附下载
0.89元/片:KN95口罩30片26.9元大促
全球热文:全球首款!大上科技墨水屏显示器上架:25.3寸超大屏幕
天天观速讯丨我们为什么使用Docker
天天滚动:win11上同时安装多个版本的python
当前信息:999元 小米Sound Pro太顶了:用户体验后感觉地板都在共振
天天看点:裸奔还是不行 Win10/11系统依然需要安全软件:免费的就行
每日速讯:顺丰突然又崩了!官方回应:系统异常 已恢复
系列最轻巧流畅系统!MIUI 14开发版首批推送来了
每日讯息!第一章作业
【全球报资讯】架构到底是指什么?
实验七-缓冲区溢出
全球看点:分析师称马斯克暴砍80%服务器订单:供应商Intel很受伤
新能源车换电池多少钱?比亚迪汉8万多 特斯拉13万
世界即时看!山东女生送闺蜜化妆品到内蒙被冻炸 当事人:心里很难过
全球首款真Hi-Fi无线耳机!vivo TWS 3 Pro图赏
2022最强电影!《阿凡达2》北京首映礼今晚举办:提前感受科幻巨作
PopClip使用教程图文详解 2022.12亲测有效
焦点快报!Html+CSS小案例项目:CSS开发小米商城电商产品展示效果
通过命令上传到GitHub
当前播报:对于async和await的使用方式、作用效果不怎么理解 ?没关系,初步看这篇就够了。
记录--记一次前端CSS升级
世界观焦点:中国生物最新研究!灭活疫苗对新冠康复者同样具有保护效力
环球热点评!女子住1楼质问物业为啥要交电梯费 网友力挺
OPPO Find N2 Flip亮相:副屏太惊艳
环球新资讯:日本公布2022年度热门汉字:“战”二次当选 理由奇葩
李诞入手小米13和13 Pro:大玩谐音梗
每日快报!【脚本项目源码】Python制作多功能音乐播放器,打造专属你的音乐播放器
每日关注!雷军分享小米13/MIUI 14内置壁纸原图:大批iPhone用户感谢
世界观天下!不用耳机也有立体听感!moto X40新增空间音频功能
电动自行车新国标充电插头曝光:三脚接口无了 不配套不上电
中国汽车工业见证者上新!全新BJ212开售:9.99万起
当前观点:顺丰又崩了!小程序查件、寄件都无法操作:范围极大
Python工具箱系列(十九)
Linux发布6.1稳定版:进一步提升国产LoongArch架构CPU支持
婆婆给刚出生9天宝宝喂米糊引热议 医生称太离谱:回击这是习俗 科学靠边
世界杯决赛用球亮相:取名“梦想”、内藏高科技
续航轻松破1000km 哈弗H6插电混动亮相泰国:老外都叹服!
环球观热点:马斯克反悔:毫米波雷达重新上车
每日看点!建立自己的kindle书库
国产麒麟系统下基于卫星的NTP网络时间服务器方案
清江浦一行代码 & JNPF :PM2.5全程质控,精准助力建筑业污染防治
全球观热点:sentry 在加载模块时闪退
世界微头条丨零基础开启元宇宙|如何快速创建虚拟形象
Git 的基本使用——笔记
今日视点:Python爬虫实战,requests+openpyxl模块,爬取手机商品信息数据(附源码)
k8s容器内部通过Prometheus Operator部署MySQL Exporter监控k8s集群外部的MySQL
网上打字员赚钱是真的吗?网上打字员是干什么的?
鸿蒙系统3.0支持哪些手机型号?鸿蒙系统3.0怎么升级?
微博借款利息高吗?微博借款利息和借呗哪个高?
余额宝消费红包是什么意思?余额宝消费红包怎么使用?
送男客户什么礼物合适?送男客户礼物前十件排名
电脑光驱是什么东西?电脑找不到光驱驱动器怎么办?
华硕笔记本如何下载驱动?华硕笔记本驱动怎么打开?
空的文件夹占内存吗?空的文件夹为什么删不掉?
DOTA是什么意思?dota和英雄联盟的区别有哪些?
如何提高电脑性能?提高电脑性能的方法有哪些?
环球热头条丨ADB批量截图,且用时间命名
每日信息:行为管理(锐捷智慧教室)
水溶性笔是什么意思?水溶性笔和油性笔的区别是什么?
白炽灯色温是多少?白炽灯色温4000-4600K是多少度?
八字有多少种排列组合?八字有食神代表什么?
荷月是几月的别称?十二个月的别称和雅称
酒店的英语怎么说?酒店前台的工作内容是什么?
全球关注:CAD.NET 批量打印、导出DPF
精选!为解决微信加群或拉人建群的痛点,我用时一个多月写了一个小程序
c++ 如何做出实现一组数据的实际索引
短信+邮箱验证码登录
今亮点!go-dongle 0.2.1 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库
当前快播:河北用上了无人驾驶农机:北斗加持 坐在屋里就把地给种了
今日要闻!奔驰、宝马、特斯拉相继取消收音机!广播公司担忧:有隐患
换机周期将创历史新高:长达43个月 你多久换一次?
波音、空客狂喜 印度将签史诗级飞机订单:一次买下500架
天天实时:创建全国首个ICU!我国重症医学奠基人陈德昌离世 享年90岁
【当前独家】公司产品太多了,怎么实现一次登录产品互通?
【世界新要闻】2799元配酷睿i5!小米迷你主机将开启众筹 便宜900元条件公布
环球热门:小米13黑色版图赏:直屏直边手感秒杀iPhone 14!
真爱粉!有米粉花近万元抢了两台小米13
世界快资讯:好评率超99% 小米MIX Fold 2推出月光银配色 雷军:镜面效果令人惊叹
天天热点评!比RTX 4090便宜5000 AMD RX 7900系列显卡年底供货20万块:备货充足
小米13系列供不应求!线上已售罄 3999元起
环球即时:差价1000元!一文了解小米13和13 Pro区别