最新要闻
- 世界观点:被曝北约考虑在日设联络处后,岸田宣称日本没有加入北约计划
- 苦等几十年!Windows终于原生支持rar、7z等格式压缩文件了|全球视点
- 车标贴满全身!梅赛德斯-迈巴赫Night Series官图发布:真奢华
- 【全球聚看点】699元 联想YOGA K7机械键盘上架:82键矮轴 真空电镀工艺
- AI网聊10分钟被骗430万 中国互联网协会给出防范建议
- 环球今头条!国内多航司现千元内国际机票 上海直飞日本仅600元
- 西部决赛:掘金淘汰洛杉矶湖人的背后,藏着多少鲜为人知的秘密-热消息
- 安卓不再清后台 OPPO Reno10系列用上16GB大内存:48个月流畅
- Find系列同款!OPPO Reno10 Pro搭载动态光影屏:120Hz高刷
- 视点!不怕别人超越!“比亚迪魔方”储能系统发布:首搭刀片电池
- 环球新消息丨349元 OPPO Enco R2耳机发布:Hi-Fi级处理芯片
- 支付宝提醒“学生账户升级”骗局:没有学生/成人账户概念!
- 社区工作者感受垃圾分类处理全过程
- 北京西京医院杨博华_北京西京医院
- 64核CPU、显卡三连冠 AMD超算屠榜:唯一一台百亿亿次
- 国产SSD卷疯了!梵想S500 Pro 2TB只要409元 观天下
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
一步步完整搭建一个图纸管理系统(Django+Vue3)
图纸管理系统
一、初步构建后端项目
1、打开已经创建好的虚拟环境:激活activate(推荐使用虚拟环境)并创建项目
2、导入vs code中,项目环境大致如下:
需要将终端改成虚拟环境的解释器后,简单试运行:
3、创建子app(图纸管理系统模块)
由于我们把子项目都放在apps里面了(方便统一管理)所以注册要加入一段配置
4、创建数据库
一定要注意格式
【资料图】
5、设置Django连接数据库
(1)安装pymysql
pip install pymysql
(2)gveInformationSystem/settings中进行相关配置
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "StudentDB", "USER": "root", "PASSWORD": "123456", "HOST": "localhost", "PORT": "3306", }}
(3)需要在init.py导入pymysql
6、创建数据库表内容
(在:apps/DrawingManagementSystem/models.py)
from django.db import models# Create your models here.# === 图纸管理系统 models# 传感器分类--sensor, 项目--project, 资料-data, 图纸信息-drawing# 公有创建时间和修改时间class TimestampMode(models.Model): """ An abstract base class model that provides selfupdating ``created`` and ``modified`` fields. """ created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) class Meta: abstract = True # it"s very important to add this line# === 传感器类 --- Sensor:Id,name,created,modifiedclass Sensor(TimestampMode): sensor_name = models.CharField(verbose_name="传感器名称", max_length=50, unique=True, null=False, blank=False) # create_time = models.DateTimeField(default=timezone.now().replace(microsecond=0)) class Meta: db_table = "Draw_Sensor" managed = True app_label = "DrawingManagementSystem" def __str__(self): return "%s" % (self.sensor_name)# === 项目类 --- project:Id,name,created,modifiedclass Project(TimestampMode): project_name = models.CharField(verbose_name="项目名称", max_length=50, unique=True, null=False, blank=False) sensor = models.ForeignKey(verbose_name="所属传感器", to=Sensor, on_delete=models.PROTECT) class Meta: db_table = "Draw_Project" managed = True app_label = "DrawingManagementSystem" def __str__(self): return "%s" % (self.project_name)# === 资料类 --- data:ID,name,created,modifiedclass Data(TimestampMode): data_name = models.CharField(verbose_name="资料名称", max_length=50, unique=True, null=False, blank=False) sensor = models.ForeignKey(verbose_name="所属传感器", to=Sensor, on_delete=models.PROTECT) project = models.ForeignKey(verbose_name="所属项目", to=Project, on_delete=models.PROTECT) class Meta: db_table = "Draw_Data" managed = True app_label = "DrawingManagementSystem" def __str__(self): return "%s" % (self.data_name)# === 图纸信息 --- drawing:ID(Material_code),drawing_name,created,modified,drawing_spec,drawing_page,drawing_client_id,drawing_remark,drawing_versionclass Drawing(TimestampMode): material_code = models.CharField(verbose_name="物料编号", max_length=50, blank=False) sensor = models.ForeignKey(verbose_name="所属传感器", to=Sensor, on_delete=models.PROTECT) project = models.ForeignKey(verbose_name="所属项目", to=Project, on_delete=models.PROTECT) data = models.ForeignKey(verbose_name="所属资料", to=Data, on_delete=models.PROTECT) drawing_name = models.CharField(verbose_name="材料名称", max_length=50, blank=False) drawing_spec = models.CharField(verbose_name="规格/图纸号", max_length=50, blank=False) drawing_page = models.CharField(verbose_name="图纸页数", max_length=50, blank=False) drawing_client_id = models.CharField(verbose_name="客户编号", max_length=50) drawing_version = models.CharField(verbose_name="版本号", max_length=50, blank=False) drawing_remark = models.CharField(verbose_name="备注", max_length=100) drawing_url = models.CharField(verbose_name="地址", max_length=100) is_deleted = models.IntegerField(verbose_name="逻辑删除0否1是", max_length=10, blank=False, default=0) class Meta: db_table = "Draw_Drawing" managed = True app_label = "DrawingManagementSystem" def __str__(self): return "%s" % (self.drawing_name)
(1)用指令生成数据库
python manage.py makemigrationspython manage.py migrate
完成后代码如下:
7、DRF接口(初步)
(1)DRF的安装和快速实现
安装DjangoRestFramework包
pip install djangorestframework==3.13.0
在settings中导入
序列化:负责对象和json格式的相互转换
a获取数据:对象-->Json返回给前端
b添加、修改:json-->对象 存储在数据库中
视图:实现后台功能的核心
早期:视图是基于函数--FBV
DRF:视图基于类--CBV
路由:路由的匹配
(2)序列化
创建DrawingManagementSystem\serializer.py文件
from rest_framework import serializersfrom DrawingManagementSystem.models import Sensor, Project, Data, Drawing# ----Sensor序列化类----class SensorSerialzer(serializers.ModelSerializer): class Meta: model = Sensor fields = "__all__"# ____Project序列化类____class ProjectSerialzer(serializers.ModelSerializer): class Meta: model = Project fields = "__all__"# ____Data序列化类____class DataSerialzer(serializers.ModelSerializer): class Meta: model = Data fields = "__all__"# ____Drawing序列化类____class DrawingSerialzer(serializers.ModelSerializer): class Meta: model = Drawing fields = "__all__"
(3)编写view.py代码(apps\DrawingManagementSystem\views.py)
# ====== 导入模块 ======from rest_framework.viewsets import ModelViewSet # 封装完成的ModelViewset视图集from DrawingManagementSystem.models import Sensor, Project, Data, Drawing # 具体的类from DrawingManagementSystem.serializer import SensorSerialzer, ProjectSerialzer, DataSerialzer, DrawingSerialzer # 序列化类# ---Sensor视图---class SensorViewSet(ModelViewSet): queryset = Sensor.objects.all() serializer_class = SensorSerialzer# ---Project---class ProjectViewSet(ModelViewSet): queryset = Project.objects.all() serializer_class = ProjectSerialzer# ---Data视图---class DataViewSet(ModelViewSet): queryset = Data.objects.all() serializer_class = DataSerialzer# ---Sensor视图---class DrawingViewSet(ModelViewSet): queryset = Drawing.objects.all() serializer_class = DrawingSerialzer
(4)编写urls.py代码(apps\DrawingManagementSystem\urls.py)
# ======导入模块======from django.urls import pathfrom rest_framework.routers import DefaultRouterfrom DrawingManagementSystem.views import SensorViewSet, ProjectViewSet, DataViewSet, DrawingViewSet# ====1.实例化一个 DefaultRouter====router = DefaultRouter()# ====2.注册相应的url====# 注册Sensor对象router.register("Sensors", SensorViewSet, basename="Sensors") # http://127.0.0.1:8080/DrawingApi/v1/Sensors/# 注册Sensor对象router.register("Projects", ProjectViewSet, basename="Projects") # http://127.0.0.1:8080/DrawingApi/v1/Projects/# 注册Sensor对象router.register("Datas", DataViewSet, basename="Datas") # http://127.0.0.1:8080/DrawingApi/v1/Datas/# 注册Sensor对象router.register("Drawings", DrawingViewSet, basename="Drawings") # http://127.0.0.1:8080/DrawingApi/v1/Drawings/urlpatterns = []# ====3.附加到urlpatterns集合中====urlpatterns += router.urls
编写总urls.py代码(gveInformationSystemBE\urls.py)
from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path("admin/", admin.site.urls), path("DrawingApi/v1/",include("DrawingManagementSystem.urls")),]
编写后运行django项目
python manage.py runserver
浏览器输入:http://127.0.0.1:8000/DrawingApi/v1/
可以看到界面如下:
说明简单后端接口已经完成,可以简单测试下:
发现存入的时间是北美市区,将gveInformationSystemBE\settings.py中的USE_TZ = True改为:USE_TZ = False
发现存入的时间是带毫秒:参考解决方法为
或者直接在数据库软件中
可以避免存入毫秒的问题
8、DRF进阶(增删改接口、筛选、搜索、分页)
其实在网址后面加上id,就可以进行数据的删除修改
(1)DRF的筛选
步骤为:
安装:pip install django-filter
pip install django-filter==21.1
注册到installed_apps中
完成filter的筛选类
在apps\DrawingManagementSystem新建filter.py
# =====导入模块=====from django_filters import FilterSetfrom DrawingManagementSystem.models import Sensor, Project, Data, Drawing# ---Sensor的Filter类---class SensorFilter(FilterSet): class Meta: model = Sensor fields = ("sensor_name",) # 传感器名称# ---Project的Filter类---class ProjectFilter(FilterSet): class Meta: model = Project fields = ("project_name", "sensor") # 项目名称 所属传感器# ---Data的Filter类---class DataFilter(FilterSet): class Meta: model = Data fields = ("data_name", "sensor", "project") # 资料名称 所属传感器 所属项目# ---Drawing的Filter类---class DrawingFilter(FilterSet): class Meta: model = Drawing fields = ("drawing_name", "material_code", "drawing_spec", "drawing_client_id") # 材料名称、物料编号、规格/图纸号、客户编号
在viewset中添加筛选类
# ====== 导入模块 ======from rest_framework.viewsets import ModelViewSet # 封装完成的ModelViewset视图集from DrawingManagementSystem.models import Sensor, Project, Data, Drawing # 具体的类from DrawingManagementSystem.serializer import SensorSerialzer, ProjectSerialzer, DataSerialzer, \ DrawingSerialzer # 序列化类from django_filters.rest_framework import DjangoFilterBackend # 实现筛选的后台模块from DrawingManagementSystem.filter import SensorFilter, ProjectFilter, DataFilter, DrawingFilter# ---Sensor视图---class SensorViewSet(ModelViewSet): queryset = Sensor.objects.all() serializer_class = SensorSerialzer # 设定筛选的后台 filter_backends = (DjangoFilterBackend,) # 指定筛选的类 filter_class = SensorFilter# ---Project---class ProjectViewSet(ModelViewSet): queryset = Project.objects.all() serializer_class = ProjectSerialzer # 设定筛选的后台 filter_backends = (DjangoFilterBackend,) # 指定筛选的类 filter_class = ProjectFilter# ---Data视图---class DataViewSet(ModelViewSet): queryset = Data.objects.all() serializer_class = DataSerialzer # 设定筛选的后台 filter_backends = (DjangoFilterBackend,) # 指定筛选的类 filter_class = DataFilter# ---Sensor视图---class DrawingViewSet(ModelViewSet): queryset = Drawing.objects.all() serializer_class = DrawingSerialzer # 设定筛选的后台 filter_backends = (DjangoFilterBackend,) # 指定筛选的类 filter_class = DrawingFilter
效果如下:
(2)筛选优化——模糊匹配
# =====导入模块=====from django_filters import FilterSet,filtersfrom DrawingManagementSystem.models import Sensor, Project, Data, Drawing# ---Sensor的Filter类---class SensorFilter(FilterSet): # 重新需要支持模糊匹配的字段 sensor_name = filters.CharFilter(field_name="sensor_name",lookup_expr="icontains") class Meta: model = Sensor fields = ("sensor_name",) # 传感器名称# ---Project的Filter类---class ProjectFilter(FilterSet): # 重新需要支持模糊匹配的字段 project_name = filters.CharFilter(field_name="project_name", lookup_expr="icontains") class Meta: model = Project fields = ("project_name", "sensor") # 项目名称 所属传感器# ---Data的Filter类---class DataFilter(FilterSet): # 重新需要支持模糊匹配的字段 data_name = filters.CharFilter(field_name="data_name", lookup_expr="icontains") class Meta: model = Data fields = ("data_name", "sensor", "project") # 资料名称 所属传感器 所属项目# ---Drawing的Filter类---class DrawingFilter(FilterSet): # 重新需要支持模糊匹配的字段 drawing_name = filters.CharFilter(field_name="drawing_name", lookup_expr="icontains") material_code = filters.CharFilter(field_name="material_code", lookup_expr="icontains") drawing_spec = filters.CharFilter(field_name="drawing_spec", lookup_expr="icontains") drawing_client_id = filters.CharFilter(field_name="drawing_client_id", lookup_expr="icontains") class Meta: model = Drawing fields = ("drawing_name", "material_code", "drawing_spec", "drawing_client_id") # 材料名称、物料编号、规格/图纸号、客户编号
(3)全局加入筛选后台
在gveInformationSystemBE\settings.py中加入
# ======= REST Framework全局设置 ===========REST_FRAMEWORK = { # ==== 设置全局的Filter_Backends ==== "DEFAULT_FILTER_BACKENDS": [ "django_filters.rest_framework.DjangoFilterBackend", ],}
这样views.py中就不需要加入
# 设定筛选的后台 filter_backends = (DjangoFilterBackend,)
修改后代码如下:
# ====== 导入模块 ======from rest_framework.viewsets import ModelViewSet # 封装完成的ModelViewset视图集from DrawingManagementSystem.models import Sensor, Project, Data, Drawing # 具体的类from DrawingManagementSystem.serializer import SensorSerialzer, ProjectSerialzer, DataSerialzer, \ DrawingSerialzer # 序列化类from DrawingManagementSystem.filter import SensorFilter, ProjectFilter, DataFilter, DrawingFilter# ---Sensor视图---class SensorViewSet(ModelViewSet): queryset = Sensor.objects.all() serializer_class = SensorSerialzer # 指定筛选的类 filter_class = SensorFilter# ---Project---class ProjectViewSet(ModelViewSet): queryset = Project.objects.all() serializer_class = ProjectSerialzer # 指定筛选的类 filter_class = ProjectFilter# ---Data视图---class DataViewSet(ModelViewSet): queryset = Data.objects.all() serializer_class = DataSerialzer # 指定筛选的类 filter_class = DataFilter# ---Sensor视图---class DrawingViewSet(ModelViewSet): queryset = Drawing.objects.all() serializer_class = DrawingSerialzer # 指定筛选的类 filter_class = DrawingFilter
(4)加入搜索
筛选【filter】:一个值只能对应一个字段,需要django-filter
搜索【search】;一个值能对应多个字段,DRF自带
在gveInformationSystemBE\settings.py中加入"rest_framework.filters.SearchFilter",
# ======= REST Framework全局设置 ===========REST_FRAMEWORK = { # ==== 设置全局的Filter_Backends ==== "DEFAULT_FILTER_BACKENDS": [ "django_filters.rest_framework.DjangoFilterBackend", "rest_framework.filters.SearchFilter", ],}
在apps\DrawingManagementSystem\views.py中加入需要搜索匹配的字段
# ---Sensor视图---class DrawingViewSet(ModelViewSet): queryset = Drawing.objects.all() serializer_class = DrawingSerialzer # 指定筛选的类 filter_class = DrawingFilter # 指定查找匹配的字段 search_fields = ("drawing_name", "material_code", "drawing_spec", "drawing_client_id")
结果如下:
(5)加入分页
有2种,一种为全局
即在在gveInformationSystemBE\settings.py中加入
# ======= REST Framework全局设置 ===========REST_FRAMEWORK = { # ==== 设置全局的Filter_Backends ==== "DEFAULT_FILTER_BACKENDS": [ "django_filters.rest_framework.DjangoFilterBackend", "rest_framework.filters.SearchFilter", ], # ===== 设置分页 =============== "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", "PAGE_SIZE": 10}
还有一种为:按需分页
apps\DrawingManagementSystem下新建paginations.py
代码如下:
# ========== 导入 ===========from rest_framework.pagination import PageNumberPaginationclass MyPageNumberPagination(PageNumberPagination): page_size = 5 page_query_param = "page" page_size_query_param = "size" max_page_size = 50
在apps\DrawingManagementSystem\views.py中加入:
from DrawingManagementSystem.paginations import MyPageNumberPagination########## ---Sensor视图---class DrawingViewSet(ModelViewSet): queryset = Drawing.objects.all() serializer_class = DrawingSerialzer pagination_class = MyPageNumberPagination # 指定筛选的类 filter_class = DrawingFilter # 指定查找匹配的字段 search_fields = ("drawing_name", "material_code", "drawing_spec", "drawing_client_id")
效果如下:
9、添加Swagger文档
记得在setting中注册
INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "DrawingManagementSystem", "rest_framework", "django_filters", "drf_yasg",]
效果如下:
想要中文注释
效果如下:
关键词:
一步步完整搭建一个图纸管理系统(Django+Vue3)
【MyBatis】saveBatch 性能调优|即时焦点
世界观点:被曝北约考虑在日设联络处后,岸田宣称日本没有加入北约计划
苦等几十年!Windows终于原生支持rar、7z等格式压缩文件了|全球视点
车标贴满全身!梅赛德斯-迈巴赫Night Series官图发布:真奢华
【全球聚看点】699元 联想YOGA K7机械键盘上架:82键矮轴 真空电镀工艺
AI网聊10分钟被骗430万 中国互联网协会给出防范建议
环球今头条!国内多航司现千元内国际机票 上海直飞日本仅600元
西部决赛:掘金淘汰洛杉矶湖人的背后,藏着多少鲜为人知的秘密-热消息
es之增删改查 每日播报
顶象全新金融业务安全方案,亮相亚太银行数字化峰会
Java开启异步的两种方式
Python文件读写、StringIO和BytesIO_每日速看
动态:Ruby教程_编程入门自学教程_菜鸟教程-免费教程分享
【环球新要闻】【新华500】新华500指数(989001)24日下跌1.28%
安卓不再清后台 OPPO Reno10系列用上16GB大内存:48个月流畅
Find系列同款!OPPO Reno10 Pro搭载动态光影屏:120Hz高刷
视点!不怕别人超越!“比亚迪魔方”储能系统发布:首搭刀片电池
环球新消息丨349元 OPPO Enco R2耳机发布:Hi-Fi级处理芯片
支付宝提醒“学生账户升级”骗局:没有学生/成人账户概念!
焦点快播:Spring Boot 我随手封装了一个万能的 Excel 导出工具,传什么都能导出!
火山引擎DataLeap联合DataFun发布《数据治理知识地图》_世界新消息
当前要闻:推荐一个AI导航网站 - 收录的都是热门AI工具
社区工作者感受垃圾分类处理全过程
北京西京医院杨博华_北京西京医院
64核CPU、显卡三连冠 AMD超算屠榜:唯一一台百亿亿次
国产SSD卷疯了!梵想S500 Pro 2TB只要409元 观天下
最轻薄潜望手机!OPPO Reno10 Pro+亮相
当前关注:搭载4.0L水平对置发动机 300万的保时捷中国开卖:但不能上路
淮北建投20亿元公司债将付息 利率6.30%
springboot~mybatis-plus的DynamicTableNameInnerInterceptor实现分表
用上3.0T直六发动机!马自达旗舰CX-90现身:今年内国产_天天看热讯
今日播报!Win11最新版发布:性能更好更丝滑
粤港澳大湾区首个京粤产业协作中心挂牌并落户广州黄埔 快播报
苹果WWDC23终极“剧透”:iOS 17登场 首款头显万众期待 天天精选
天天热点评!《原神》3.7版本正式上线!原神首个卡牌赛事登场
99包邮手慢无!匹克路威篮球鞋2折清仓(门店469元)
脾气真大!一特斯拉插队未遂现场报复:直接加速撞车 全球快看
甄子丹出演苹果广告:叶师傅 切他中路!|当前焦点
焦点播报:“五一”假期出行,伴随着哪些风险
全网最全的编程电子书大合集,超千本打包下载
求求你,不要再把ER图和数据库模型图搞混了好嘛?
【一步步开发AI运动小程序】六、人体骨骼图绘制|聚焦
全球观点:云图说丨初识商标注册服务
切辣椒手很辣该怎么办_切辣椒手辣要几个小时消失
焦点速讯:《街霸6》将迎合新一代玩家:隆、肯和春丽等老角色将被取代
今日精选:女孩减肥去世 体重仅24.8公斤!科普神经性厌食危害
“BOSS直聘崩了”登上热搜 公司回应:PC端异常 已紧急修复
电竞首次入赛!杭州亚运会《DOTA2》国家集训队名单出炉:共27人
今日关注:轻微交通事故APP快处 全国首批36城上线!附操作方法
微软重磅宣布!Windows 的“ AI 时刻”来了_环球新消息
【解决方法】SecureCRT远程工具无法show命令无法使用管道符完成中文过滤检索
Apache Hudi 在袋鼠云数据湖平台的设计与实践
CloudQuery v2.0.0 发布 | 新增数据保护、数据变更、连接管理等功能_环球观点
动态:JavaScript基础语法之 || 和 ?? 的踩坑记录
里夫斯:我在发声上做得不如詹眉 但高的篮球IQ会帮我提高领导力 世界微资讯
昆明国资委:“昆明银行口专家路演要点”和《昆明城投专家会议纪要》不实-焦点热门
微动态丨吉利也来“围攻”比亚迪 银河L7上市定档:1.5T插混能跑1300km
官网不停运!亚马逊中国回应7月关闭应用商店:不影响业务运营 天天快播报
迎来重磅更新!Win11文件管理器界面UI将整体重做
低价游太空梦破碎!维珍轨道破产 三大航空公司瓜分其资产|今日快看
双摄像头一览无余!萤石Y3000FVX极光人脸视频锁图赏|世界快资讯
【世界播资讯】现场直击|凯瑞特亮相CTT Expo 2023,热度飙升,实力圈粉
焦点讯息:sipp重放rtp数据测试FreeSWITCH
Algorithm_01--C#递归算法02 每日速看
HTML中的attribute 和 property
世界快资讯:Wi-Fi 6都没玩明白 怎么就惦记上Wi-Fi 7了?
今日关注:马斯克:已确定特斯拉接班人、自己有意外他将接管公司
速递!星巴克家享黑咖啡2.5元/杯大促 原价15元
世界微动态丨明天发布!小米Civi 3首发天玑8200-Ultra:能效、影像增强
千呼万唤始出来!微软官宣Win11任务栏不合并将回归
农发行广西区分行与东兰县签署战略合作协议
苹果MR或将推出 “果链”企业频受调研_环球快消息
骆仁童老师主讲《数字经济下电力业转型》课程 | 河北某地热电企业-2023年中高层管理人员培训班(二期)
80年代曾风靡全球 乐高为“吃豆人”游戏打造了一款街机 还能玩 焦点快看
世界热点评!新能源汽车高歌猛进 5月销量预计大增60% 渗透率超1/3
乌冬面里吃出活青蛙 日本连锁店鞠躬道歉:网友看完大呼恶心|世界热闻
越南打工人不加班逼急中国老板 不为钱放弃生活:全球各国每日工作时间一览-世界快讯
美国债务上限谈判未破僵局 避险美债再获追捧
为什么说人民币汇率不会大起大落-全球快播报
茶叶的故乡是哪里 茶的故乡是哪儿 天天报资讯
史诗级更新!特斯拉2023.12.9 OTA推送:强制单踏板成历史_天天短讯
Win10已死!微软发布Windows 11大更新:引入ChatGPT、升级巨大
《英雄联盟》衍生游戏!《聚点危机:英雄联盟外传》开售:GTX 460爽玩
全面实施国六B 这类汽车将禁止销售 会大幅降价吗?-今日播报
芦荟胶去红血丝效果好吗(芦荟胶对红血丝有效果吗)
焦点!5899元起 索尼新一代超广角变焦Vlog相机ZV-1 II发布
MarkDown的使用(一)
全球动态:宁波海达控股集团有限公司
苹果遭殃!逃税近千亿元-世界要闻
美团登陆香港的第一天 就把外卖价格干下来了! 环球新要闻
【天天时快讯】AMD Zen2架构复活!6nm重生、居然还有2核心2线程
主板卖不动!厂商憋出新招 当前热讯
这就是Intel显卡的意义!Arc A750限量版199美元史低价达成 天天热文
全球热点评!金钱树一次浇多少水_金钱树多久浇一次水
野生海参功效与作用_野生海参
丹丹看天气丨申城明天短时降温 后天重启入夏冲刺
焦点要闻:银行审核房贷一般几天 官方信息这样显示的
小清河6月底全线复航 可实现三种方式运输
审批时限缩短50%!云南省首个外国人才“一站式服务”专区启用