首页 > 财经 >

flask自定义参数校验、序列化和反序列化

2023-06-15 15:15:40 博客园


(资料图片)

项目总体结构

我的工厂函数factory.py

from settings import settingfrom flask import Flaskfrom models.models import dbfrom flask_migrate import Migratefrom urls.router import bp_te, bp_lo# from flask_script import Managerfrom utils.log import set_log# from flask_limiter import Limiter# from flask_limiter.util import get_remote_address# https://www.cnblogs.com/Du704/p/13281032.htmlmysql_host = setting.MYSQL_HOSTmysql_port = setting.MYSQL_PORTmysql_user = setting.MYSQL_USERmysql_pwd = setting.MYSQL_PASSWORDmysql_database = setting.MYSQL_DATABASEenv_cnf = setting.ENV_CNFdef create_app():    set_log()    application = Flask(__name__)    DB_URI = f"mysql+pymysql://{mysql_user}:{mysql_pwd}@{mysql_host}:{mysql_port}/{mysql_database}"    application.config["SQLALCHEMY_DATABASE_URI"] = DB_URI    # 是否追踪数据库修改,一般不开启, 会影响性能    application.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False    # 是否显示底层执行的SQL语句    application.config["SQLALCHEMY_ECHO"] = False    # 初始化db,关联项目    db.app = application    db.init_app(application)    migrate = Migrate()    migrate.init_app(application, db)    # 注册蓝图    application.register_blueprint(bp_te)    application.register_blueprint(bp_lo)    # manager = Manager(application)    return applicationapplication = create_app()

配置文件setting.py,读取数据库等配置信息

from configparser import ConfigParserfrom pathlib import Pathfrom utils.encryption import getDataAesBASE_DIR = Path(__file__).resolve().parent.parentconf = ConfigParser()conf.read("config.ini", encoding="utf-8")try:    mysqlhost = conf.get("mysql", "host")    mysqlport = conf.get("mysql", "port")    mysqluser = conf.get("mysql", "user")    mysqlpassword = conf.get("mysql", "password")    mysqlname = conf.get("mysql", "name")    secret = conf.get("serve", "secret")    env_cnf = conf.get("serve", "env")    redishost = conf.get("redis", "host")    redisport = conf.get("redis", "port")    redispwd = conf.get("redis", "password")    redislibrary = conf.get("redis", "library")    MINIOHOST = conf.get("minio", "clienthost")    MINIOPORT = conf.get("minio", "clientport")    miniopwd = conf.get("minio", "password")    miniouser = conf.get("minio", "user")    MINIOWEBHOST = conf.get("minio", "webhost")    MINIOWEBPORT = conf.get("minio", "webport")    MINIOHTTP = conf.get("minio", "http")except Exception as e:    print(e)    mysqlhost = "127.0.0.1"    mysqlport = 3306    mysqluser = "root"    mysqlpassword = "000000"    mysqlname = "0"    secret = "Wchime"    env_cnf = "develop"    redishost = "127.0.0.1"    redisport = "6379"    redispwd = "000000"    redislibrary = "1"    MINIOHOST = "127.0.0.1"    MINIOPORT = "9000"    MINIOWEBPORT = "9000"    miniopwd = "000000"    miniouser = "000000"    MINIOHTTP = "http://"    MINIOWEBHOST = "127.0.0.1"MYSQL_HOST = mysqlhostMYSQL_PORT = mysqlportMYSQL_USER = getDataAes(secret, mysqluser)MYSQL_PASSWORD = getDataAes(secret, mysqlpassword)MYSQL_DATABASE = mysqlnameREDIS_HOST = redishostREDIS_PORT = redisportREDIS_PASSWORD = getDataAes(secret, redispwd)REDIS_LIBRARY = redislibraryMINIOPWD = getDataAes(secret, miniopwd)MINIOUSER = getDataAes(secret, miniouser)ENV_CNF = env_cnfif __name__ == "__main__":    print(mysqlpassword)

models.py数据库模型文件

import datetimefrom utils.core import dbfrom sqlalchemy_serializer import SerializerMixinclass Uu(db.Model, SerializerMixin):    __tablename__ = "uu"    id = db.Column(db.Integer, autoincrement=True, primary_key=True)    name = db.Column(db.String(20), nullable=False)    age = db.Column(db.Integer, nullable=False)    ux_id = db.Column(db.Integer, db.ForeignKey("ux.id", ondelete="SET NULL"), nullable=True)    ux = db.relationship("Ux", backref="uu")        # , lazy="dynamic"    des = db.Column(db.String(20), nullable=True)    img = db.Column(db.String(128), nullable=True)class Ux(db.Model, SerializerMixin):    serialize_rules = ("-uu",)    __tablename__ = "ux"    id = db.Column(db.Integer, autoincrement=True, primary_key=True)    name = db.Column(db.String(20), nullable=False)

序列化文件serializes.py

from models import modelsfrom utils.base import Serialize, DeSerializeclass TestSerialize(Serialize):    model = models.Uu    fields = ["id", "name"]    build_fiels = [        {"name": "ux_name", "source": "ux.name"},        {"name": "img", "method": True}    ]    def get_img(self, instance):        return []class TestDeSerialize(DeSerialize):    model = models.Ux    required_fields = ["name"]    ser_fields = ["id", "name"]

base.py自定义序列化和反序列化和参数解析文件

from models.models import dbfrom flask_restful import abortfrom sqlalchemy import inspectclass DeSerialize(object):    """    反序列化,增删改    """    model = None    req_fields = None    other_fields = []    req_data = {}    insatance = None    ser_fields = []    def __init__(self, insatance=None, data={}):        self.insatance = insatance        self.req_data = data    @property    def required_fields(self):        return self._get_fileds(self.req_fields)    @property    def serializer_fields(self):        return self.ser_fields if self.ser_fields else self.model().serializable_keys    def _get_fileds(self, fileds):        if fileds is None:            values_valid = self.model().serializable_keys        else:            values_valid = fileds        values_valid = list(values_valid)        # 删除主键        try:            primary_key = list(map(lambda x: x.name, inspect(self.model).primary_key))[0]            if primary_key in values_valid:                values_valid.remove(primary_key)        except:            if "id" in values_valid:                values_valid.remove("id")        return values_valid    def _get_vaild_values(self):        vaild_dict = {}        err = "request data is empty"        for key in self.required_fields:            value = self.req_data.get(key)            if value is None:                err = f"{key} is not required"                return False, err            vaild_dict[key] = value        for key in self.other_fields:            value = self.req_data.get(key)            if value is None:                continue            vaild_dict[key] = value        return vaild_dict, err    def _create(self):        vaild_data, err = self._get_vaild_values()        if vaild_data:            try:                instance = self.model(**vaild_data)                db.session.add(instance)                db.session.commit()                self.insatance = instance                return True, "success"            except:                err = "please correct fileds"                return False, err        else:            return False, err    def _update(self):        vaild_data, err = self._get_vaild_values()        if vaild_data:            try:                instance = self.insatance                if instance is None:                    return False, "not find data"                for key, value in vaild_data.items():                    setattr(instance, key, value)                db.session.commit()                return True, "success"            except:                err = "please correct fileds"                return False, err        else:            return False, err    def save(self):        if self.insatance is None:            ret, msg = self._create()            if ret is False:                abort(400, msg=msg)        else:            ret, msg = self._update()            if ret is False:                abort(400, msg=msg)    @property    def data(self):        if self.insatance is None:            msg = "data is not save"            abort(500, msg=msg)        return self.insatance.to_dict(only=tuple(self.serializer_fields))    def delete(self):        if self.insatance is None:            msg = "not find data"            abort(400, msg=msg)        else:            try:                db.session.delete(self.insatance)                db.session.commit()            except Exception:                msg = "delete exception"                abort(400, msg=msg)class Serialize(object):    """    序列化    """    model = None    fields = "__all__"    modelsDatas = []    many = True    date_format = "%Y-%m-%d"    datetime_format = "%Y-%m-%d %H:%M:%S"    time_format = "%H:%M:%S"    build_fiels = []    def __init__(self, serializers, many=True):        self.modelsDatas = serializers        self.many = many    @property    def data(self):        li = []        try:            if self.many:                for data in self.modelsDatas:                    da = data.to_dict(only=tuple(self.serializer_fields), date_format=self.date_format,                                      datetime_format=self.datetime_format, time_format=self.time_format)                    da.update(self._get_build_files_values(data))                    li.append(da)            else:                da = self.modelsDatas.to_dict(only=tuple(self.serializer_fields), date_format=self.date_format,                                              datetime_format=self.datetime_format, time_format=self.time_format)                da.update(self._get_build_files_values(self.modelsDatas))                li.append(da)        except Exception as e:            print(e)            msg = "serialize error"            li.append(msg)            abort(500, msg=msg)        return li    @property    def serializer_fields(self):        return self.fields if self.fields != "__all__" else self.model().serializable_keys    def _get_build_files_values(self, data):        dit = {}        for build in self.build_fiels:            obj = data            if build.get("method"):                func = f"get_{build["name"]}"                f = getattr(self, func)                value = f(obj)                dit[build["name"]] = value            else:                source_list = build["source"].split(".")                value = None                for source in source_list:                    value = getattr(obj, source, None)                    if value:                        obj = value                    else:                        break                dit[build["name"]] = value        return ditclass ParseQuery(object):    """    查询,排序    """    filer_query = frozenset(["gt", "ge", "lt", "le", "ne", "eq", "ic", "ni", "in"])    def __init__(self, model, req_data, filter_list=[], order_by=None):        self.model = model        self.req_data = req_data        self.filter_list = filter_list        self.order_by = order_by        self._operator_funcs = {            "gt": self.__gt_model,            "ge": self.__ge_model,            "lt": self.__lt_model,            "le": self.__le_model,            "ne": self.__ne_model,            "eq": self.__eq_model,            "ic": self.__ic_model,            "ni": self.__ni_model,            # "by": self.__by_model,            "in": self.__in_model,        }    @property    def _filter_data(self):        search_dict = {}        for fit in self.filter_list:            val = self.req_data.get(fit)            key = fit.split("__")[0]            if val and hasattr(self.model, key):                search_dict[fit] = val        return search_dict    def _parse_fields(self):        li = []        for search_key, value in self._filter_data.items():            key, ope = search_key.split("__")            if ope in self.filer_query:                data = self._operator_funcs[ope](key=key, value=value)                li.append(data)        return li    def _filter(self):        data = tuple(self._parse_fields())        quety_data = self.model.query.filter(*data)        if self.order_by:            data = self._parse_order_by()            quety_data = quety_data.order_by(*data)        return quety_data    @property    def query(self):        return self._filter()    def pagination_class(self, page_num=1, page_size=10, max_page_size=50, error_out=False):        pagin = self.query.paginate(            page=page_num,            per_page=page_size,            error_out=error_out,            max_per_page=max_page_size        )        return pagin.items, pagin.total    def _parse_order_by(self):        """        解析排序        :return:        """        li = []        for ord in list(self.order_by):            if ord.find("-") == -1:                data = self.__by_model(ord)                if data:                    li.append(data.asc())            else:                ord = ord[1:]                data = self.__by_model(ord)                if data:                    li.append(data.desc())        return tuple(li)    def __by_model(self, key):        """        排序时获取字段        :return:        """        return getattr(self.model, key)    def __gt_model(self, key, value):        """        大于        :param key:        :param value:        :return:        """        return getattr(self.model, key) > value    def __ge_model(self, key, value):        """        大于等于        :param key:        :param value:        :return:        """        return getattr(self.model, key) >= value    def __lt_model(self, key, value):        """        小于        :param key:        :param value:        :return:        """        return getattr(self.model, key) < value    def __le_model(self, key, value):        """        小于等于        :param key:        :param value:        :return:        """        return getattr(self.model, key) <= value    def __eq_model(self, key, value):        """        等于        :param key:        :param value:        :return:        """        return getattr(self.model, key) == value    def __ne_model(self, key, value):        """        不等于        :param key:        :param value:        :return:        """        return getattr(self.model, key) != value    def __ic_model(self, key, value):        """        包含        :param key:        :param value:        :return:        """        return getattr(self.model, key).like("%{}%".format(value))    def __ni_model(self, key, value):        """        不包含        :param key:        :param value:        :return:        """        return getattr(self.model, key).notlike("%{}%".format(value))    def __in_model(self, key, value):        """        查询多个相同字段的值        :param key:        :param value:        :return:        """        return getattr(self.model, key).in_(value)

自定义序列化和反序列化后,接口将变得简单

上面的类视图将只有短短的几行代码

x
广告
最近更新

flask自定义参数校验、序列化和反序列化

2023-06-15

男足亚运队与韩国热身即将鸣哨_中国队全主力出战

2023-06-15

持续经营能力遭关注,*ST日海再收问询函,还面临股民索赔-微资讯

2023-06-15

极端天气40余年内致欧洲19.5万人死亡

2023-06-15

恒华科技(300365.SZ):自主研发的源网荷储一体化管理平台、碳中和监测指挥平台等等产品积极应用AI技术进行图像识别、智能预测、协同调优、模拟仿真-世界报道

2023-06-15

杠杆原理公式及图解视频_杠杆原理公式及图解

2023-06-15

全球聚焦:立足湾区 协同港澳 南沙各领域加速发展 吸引港澳青年创业

2023-06-15

主播鹿乃真人长相照片_鹿乃真人照本人照片 全球微头条

2023-06-15

【全球时快讯】赞美英雄的话

2023-06-15

天天讯息:156期何尚福彩3D预测奖号:独胆推荐

2023-06-15

恒源煤电:6月14日融资买入536.07万元,融资融券余额3.16亿元|环球最资讯

2023-06-15

每日播报!鲜花环绕,品咖啡、学花艺,青浦这里可真香!

2023-06-15

浦东建设:6月14日融资买入174.26万元,融资融券余额1.63亿元

2023-06-15

昆明市人民代表大会常务委员会公告 〔十五届〕第八号-当前速讯

2023-06-15

ChatGPT是劫杀谷歌的“灭霸响指”? 环球观察

2023-06-15

自然资源部:稳妥有序落实耕地进出平衡

2023-06-15

2399元!英伟达RTX 4060确认6月29日发售

2023-06-15

6月14日基金净值:易方达安心回馈混合A最新净值2.277,涨0.35%|当前滚动

2023-06-15

全球快报:天孚通信的估值测算模型

2023-06-14

越南派出所遭袭已有46人被捕 柬埔寨加强边境安保

2023-06-14

小米12和小米13哪个信号好

2023-06-14

融创中国:债权人陈淮军提出的清盘呈请已被终止

2023-06-14

沃尔核材:乐庭智联生产的800G高速通信线部分规格已通过客户验证并实现小批量交付

2023-06-14

天天微资讯!iPhone 14 Pro仅需6000出头?盘点618不同价位段降价最猛的手机

2023-06-14

楼市年中促销冲刺时点 房企士气低迷推货积极性不高

2023-06-14

【环球时快讯】耕种管收灵活“点单” 老农人有了麦收新体验

2023-06-14

中国星辰丨遥远“天宫”的回信让藏族少年次仁达杰的梦想更近了:要像中国航天人一样,勇敢追梦,无惧困难! 环球今日讯

2023-06-14

环球快资讯:怎样给宝宝用爽身粉

2023-06-14

0-2!不懂顺势而为,陆光祖吞5连败出局,国羽男单首轮半数折戟!

2023-06-14

华中师范校友向母校捐款1亿元 系该校建校以来收到的最大一笔捐赠 当前聚焦

2023-06-14

焦点滚动:16 日开始到7 月上旬我州进入主汛期降水相对集中时段

2023-06-14

世界信息:让非遗更好地融入现代生活

2023-06-14

沃格光电(603773)6月14日13点7分触及涨停板_今日视点

2023-06-14

人到中年,领导赶你走,怎么办?-每日热门

2023-06-14

林良铭:期待自己能为国足进球 已经设计好进球庆祝动作 最新消息

2023-06-14

46岁林志玲宣告退出娱乐圈,婚姻状态再成焦点:嫁日本老公4年后,她怎么成这样了?

2023-06-14

异动快报:*ST京蓝(000711)6月14日11点26分触及涨停板|每日快看

2023-06-14

全球今头条!65英寸FireTV的交易立即看起来像是夏季的便宜货

2023-06-14

兴证全球基金这款产品封闭期浮亏29%,已收取超2亿管理费

2023-06-14

【全球新视野】世态炎凉别太善良壁纸 世态炎凉别太善良

2023-06-14

特朗普再出庭!或“戴脚镣”继续竞选之路?

2023-06-14

美国CPI引发罕见一幕!美元和黄金为何同时遭抛售?FXStreet首席分析师黄金技术前景分析

2023-06-14

roger that可以用在邮件吗_roger that什么意思

2023-06-14

庭院“小美” 乡村“大美” 云梦获评全国村庄清洁行动先进县-观察

2023-06-14

每日热点:2023年06月14日全国豆粕价格行情走势汇总

2023-06-14

世界热头条丨巴基斯坦首次用人民币购买俄原油,以美元主导进出口支付出现重大转变

2023-06-14

天文学家发现一颗相对较近的白矮星正在结晶成巨大的黑矮星

2023-06-14

6月13日基金净值:长城成长先锋混合A最新净值0.9314,涨0.68%

2023-06-14

古筝g调的认弦示意图简谱_古筝g调的认弦示意图

2023-06-13

掘金战胜热火_大比分4-1夺冠具体是什么情况

2023-06-13

热文:福建高考准考证有什么福利?

2023-06-13

环球视点!120赫兹刷屏是什么意思(刷屏是什么意思)

2023-06-13

成都熊猫谷6月19日开始试行全网实名预约分时限流入园 天天速看

2023-06-13

恒大推出1.6万套现房优惠 涉及全国260个城市

2023-06-13

广州市天河区人民政府员村街道办事处四级调研员、应急管理办公室主任胡宇航被查

2023-06-13

云南勐绿高速公路全线最长隧道右线贯通

2023-06-13

全球快资讯丨发改委:第二批国家产教融合试点工作将于下半年启动

2023-06-13

这条道路仿佛“时空隧道”,为夏日带来清凉_环球播报

2023-06-13

你也是“再生”的气候行动者吗?

2023-06-13

米哈游诉三七互娱等侵权“崩坏3”,索赔20万元_环球今头条

2023-06-13

今日英镑/美元汇率行情预测(2023年6月13日)_快资讯

2023-06-13

安徽科亚管道有限公司

2023-06-13

洗衣粉和洗衣液能一起用吗(洗衣粉和洗衣液哪个洗的干净) 世界热讯

2023-06-13

将军夫人喊你种田了_78222曽夫人数理主论坛

2023-06-13

合肥经开区上演垃圾分类“新时尚”|世界微资讯

2023-06-13

聚焦新市民、年轻人,多地出台公积金新政|世界快资讯

2023-06-13

世界今头条!统计从业资格证书还有用吗-统计从业资格证

2023-06-13

蜀中无大将廖化作先锋是褒义还是贬义(蜀中无大将廖化作先锋的意思)

2023-06-13

超脑神探租房风云怎么过 租房风云砍价攻略

2023-06-13

信用卡挂账停息影响征信吗?停息挂账的好处和危害有哪些?|世界热门

2023-06-13

甘肃为72处岩画文物构建数字影像数据库

2023-06-13

天天新动态:助力高考 护航梦想 农行平顶山分行积极开展高考志愿服务活动

2023-06-13

北向资金是什么意思-焦点消息

2023-06-13

信德新材“吃”关注函 标的新增两股东被追问 天天亮点

2023-06-13

今日要闻!如何更改qq的手机绑定_qq手机绑定怎么修改手机号换

2023-06-13

qq坦白说2020最新破解方法(2019qq坦白说怎么破解)|天天热门

2023-06-13

年仅52岁!知名男演员在睡梦中去世...

2023-06-13

天天最新:苍雷的剑姬评价(苍雷的剑姬)

2023-06-13

焦点速读:安徽省淮宿路政大队

2023-06-12

要闻:调研:毕业生海投趋势明显 就业态度更加积极主动中新社北京分社

2023-06-12

宜阳县气象台发布冰雹橙色预警【Ⅱ级/严重】【2023-06-12】

2023-06-12

我很幸运作文600字初二(我很幸运作文600字) 天天短讯

2023-06-12

伞哪个颜色最防晒_什么颜色的伞防晒效果好简介介绍

2023-06-12

环球视讯!「理响中国」“第二个结合”是源于成功实践的规律性认识

2023-06-12

6月12日腾势N7首批媒体体验解禁:充电速度可达226KW,15分钟就能充入42%的电量

2023-06-12

超混电驱奇骏品鉴会青岛站圆满举办 即时

2023-06-12

本田今天已从其网站上悄悄删除了CB300R 独家焦点

2023-06-12

把设备开上山 泥巴当护手霜 一位80后女农机手的种粮故事|天天时讯

2023-06-12

大行评级 | 花旗:因销售和投资疲软 降时代中国等多家中资房产目标价|天天热文

2023-06-12

环球快资讯丨陕西米脂:用好巡察“利剑”护民生解民忧

2023-06-12

CBA最新消息!上海男篮完成重要交易,北控报价郭艾伦,孙喆退役 世界热文

2023-06-12

每日头条!个人简历表格空白表(个人简历表格空白版)

2023-06-12

网贷逾期还不上钱怎么办?怎么协商延期还款? 环球速看料

2023-06-12

小家碧玉小说公主夜未眠_小家碧玉作者公主夜未眠_世界快消息

2023-06-12

上帝掷骰子吗简介 上帝掷骰子了吗量子物理史话-全球快播

2023-06-12

wwdc是什么_wwdc 2010 世界热闻

2023-06-11

给长辈包红包给多少合适

2023-06-11

今日热搜:下单成年陪玩,来的却是未成年人 记者调查陪玩行业乱象

2023-06-11

世界即时看!奥迪中国总裁温泽岳:计划构建中国市场专属的奥迪生态系统

2023-06-11

天天热文:cmfu学校在哪儿_cmfu

2023-06-11

geya手表怎么调日期视频教程(geya手表)-每日速读

2023-06-11

河南:关于做好2023年军队院校招收普通高中毕业生政治考核工作的通知

2023-06-11

全球消息!内膜厚度多少正常受孕_内膜厚度多少正常

2023-06-11

海南省机关事务管理局保卫处、海南省直属机关保卫大队开展朗诵比赛活动

2023-06-11

【天天速看料】谢晖或遭足协追罚?怒怼球迷可以理解,大连足球底蕴已丧失殆尽

2023-06-11

推广共享用电 新疆电力试点解决“短时用电大问题”

2023-06-11

义乌市京东代运营_专业的京东店铺代运营服务|今日快讯

2023-06-11

网暴将受严惩,依法精准打击,就问你怕不怕 天天报道

2023-06-11

天蝎男和巨蟹女彻底完了 完全不是一路人?

2023-06-11

城镇职工医疗保险证和医保卡_城镇职工医疗保险证

2023-06-11

我市开展工会爱心托管工作交流活动

2023-06-11

去年新增145家市级企业技术中心-全球消息

2023-06-11

打新套利动辄千万,“万人摇”乱象丛生,楼市限价将“退出”?_世界快消息

2023-06-11

5月出口同比下滑,司法部门向网暴“亮剑”丨一周热点回顾 观察

2023-06-11

august的由来_augus|世界最资讯

2023-06-11

通讯!新百伦官网旗舰店574款报价表_新百伦官网旗舰店

2023-06-11

美丽传说ii星愿粤语(美丽传说II星愿)

2023-06-11

全球最资讯丨去澳大利亚生活需要什么条件_个人去澳大利亚旅游有什么条件

2023-06-11

新华全媒+|夜幕下,一个群体带动城市消费新热潮

2023-06-11

得不到就毁掉!租客拿到6万补偿后“毁坏式”退房 被判赔偿9万元! 全球头条

2023-06-11

道不行乘桴浮于海这句文言文的好处包括_道不行乘桴浮于海

2023-06-11

北京人遗址传说(北京人遗址)

2023-06-11

事关猴痘!广东疾控最新提醒_环球热点

2023-06-11

每日快讯!文化的概念包括什么(文化的概念和定义)

2023-06-11

在铁路12306买卧铺票也可以在线选铺位了!手把手教你怎么操作

2023-06-11

国铁集团6月10日起在12306网站试行在线选铺服务

2023-06-11

国家防总针对南方地区持续降雨启动防汛四级应急响应_每日报道

2023-06-11

热门看点:实业公司的经营范围有哪些(什么叫 ldquo 实业公司 rdquo 实业是什么意思)

2023-06-11

直击2023中国经济传媒大会丨北京工商大学数字经济研究院院长白津夫:建设现代化产业体系要以制造业数字化转型为重点 世界快看

2023-06-11

世界观焦点:暴雨夜袭广东 广州多条街道变“泽国”

2023-06-11

今日精选:以港促业兴城 港产城相互赋能

2023-06-11

游戏陪玩行业乱象调查:不少未成年接单,线下陪玩安全难保障

2023-06-11

每日速讯:四川一中学不让学生带书离校售卖,“校内3毛/斤,校外6毛/斤”,县教育局回应

2023-06-11

中科大开拓废弃聚酯塑料循环回收新工艺-环球新资讯

2023-06-11

当前通讯!国家政策对残疾人有哪些优待? 国家对残疾人有哪些具体优惠政策

2023-06-11

外资净买超16亿!A股近4000亿白马股火了;30多亿杀入,银行股又被狂买_天天即时

2023-06-11

何处招魂香草还生三户地说的是谁(何处招魂香草还生三户地)|全球速递

2023-06-11

当前时讯:四川阿坝州茂县发生3.2级地震

2023-06-11

世界新动态:全新途观曝光!外观神似小途锐 这颜值可不输豪车?|环球快消息

2023-06-11

厦门有什么好吃的(厦门有什么特色小吃)_聚焦

2023-06-11

网络协议7层是哪七层_网络协议 全球聚焦

2023-06-11

去火的药都有哪些(去火的药)

2023-06-11

出其不意的下一句怎么接_出其不意的下一句_观焦点

2023-06-11

固定资产卡片标签样式(跑跑卡丁车莫格瑞军团兵卡片)_天天时快讯

2023-06-11

excel加法怎么操作(Excel加法) 每日时讯

2023-06-11

焦点快报!初期痔疮最好的治疗方法(初期痔疮如何治疗)

2023-06-11

5000辆FF91,换贾跃亭一次回国? 今日播报

2023-06-11

全球热点!各地税务部门不断优化服务 前5个月新办涉税经营主体643.5万户

2023-06-11

环球快讯:韩国多地举行集会 抗议日本福岛核污染水排海计划

2023-06-11

全球报道:最受欢迎的萌宠排名

2023-06-11

电脑中缺失maxnetbackburner.dll文件应该怎么处理-当前速递

2023-06-11

世界热议:云端翔龙骑士团声望怎么刷快(云端翔龙骑士团声望怎么刷)

2023-06-11

厦门推出今年第二批商住用地 计划本月底拍卖出让_当前热门

2023-06-11

2023高考今日落幕 多地公布志愿填报时间

2023-06-11

泰国选举委员会宣布重新计算47个投票站的选票 全球快资讯

2023-06-11

世界今日讯!g3高速路况实时直播 g3高速

2023-06-11

世界看点:去年新增145家市级企业技术中心

2023-06-11

滥用抗生素的危害问题(滥用抗生素的危害)

2023-06-11

【环球新要闻】国画四君子是指哪四个字(国画四君子是指哪四个)

2023-06-11

全国各地多措并举抢收抢种 农业生产有序推进

2023-06-11

陕西历史博物馆与高校共建大学生思想政治教育基地签约仪式

2023-06-11

怎么查看微信删除的聊天记录电脑(怎么查看微信删除的聊天记录)

2023-06-11

中欧班列(科克舍套—武汉)首趟回程班列抵达武汉

2023-06-11

引导行业健康发展 海南省混凝土协会正式成立

2023-06-11

《坏妈妈》大结局,李到晛&安恩真求婚合照超甜 焦点速讯

2023-06-11

世界热讯:运动鞋怎么清洗网面污渍(运动鞋怎么清洗)

2023-06-11

刘亚仁涉嫌使用毒品种类追加, 新发现2种一共七种 天天速读

2023-06-10

中国5月狭义乘用车零售预计达173.0万辆 新能源车销量达58.0万辆

2023-06-10

育娃指南 | 孩子最晚几点睡?每天至少睡多长时间?护眼指南请收好

2023-06-10

美债野蛮生长 国防开支节节攀升

2023-06-10

全球视点!身怀六甲k线图形(请问大家 在股市中 ldquo 身怀六甲出现 rdquo 走势 是什么意思)

2023-06-10

《最终幻想》史上第一位召唤兽究竟是谁?竟然不是神龙巴哈姆特!

2023-06-10

文博会云上追星、媒体主播线上带货 火爆直播为展商开拓商机_热推荐

2023-06-10

13只创业板股最新股东户数降逾5%

2023-06-10

焦点信息:肾活检能查出什么病(肾活检)

2023-06-10

当前快播:java中的/t(java(TM)是什么)

2023-06-10

化学纯分析纯和优级纯的区别(分析纯和优级纯的区别) 天天信息

2023-06-10

希捷4TB机械硬盘史低 仅售288元

2023-06-10

途家网怎么样(途家网) 全球百事通

2023-06-10

全球资讯:中方驳斥:无中生有、信口雌黄、恶意诋毁!

2023-06-10

rrna寡核苷酸编目(Oligo DNA RNA 是什么 寡聚核苷酸)

2023-06-10

AMD 官网发现 Threadripper 7900X / PRO 7905WX 系列处理器

2023-06-10

天天即时:俄媒:俄国防部公布乌军装甲车辆被摧毁视频,引用二战时期经典语录

2023-06-10

优化营商环境 各地硬招、实招频出

2023-06-10

每日快讯!欧阳靖维护欧阳娜娜:跟她合作绝对是我的荣幸

2023-06-10

金秋十月的优美句子(金秋十月什么十一月)

2023-06-10

纳兰容若人生若只如初见 卿依依_纳兰容若人生若只如初见

2023-06-10

搜救犬被确诊淋巴瘤晚期,主人带它最后一次出门,小镇居民集体出动陪它散步向它告别

2023-06-10

国家乡村振兴局开展农村厕所革命“提质年”_焦点简讯

2023-06-10

小小酱菜演绎无限可能,这一场金山非遗美食盛宴“好吃又好看”

2023-06-10

环球关注:东方电气:项目中标 在可变速抽水蓄能领域取得新突破

2023-06-10

太阳能热水器原理图(太阳能热水器原理)

2023-06-10

商务bdm什么意思(商务bd是什么意思呢)

2023-06-10

河南人的早晨从一碗非遗开始 全球头条

2023-06-10

中国代表敦促日方勿让福岛核污染水危害人类健康_新要闻

2023-06-10

日本羽田机场两架飞机疑似发生碰撞 当前热点

2023-06-10

环球热议:车间探秘!怎样做到53秒下线一台车?| 高质量发展调研行・广东站

2023-06-10

今日讯!新华全媒+|夜幕下,一个群体带动城市消费新热潮

2023-06-10

股票收盘价查询网站官网_股票收盘价查询网站

2023-06-10

这才是螃蟹爆炒最好吃的做法,辣香入味,满足你的胃-全球快资讯

2023-06-10