MTV和MVC、批量插入数据

一、MTV和MVC的概念

1、 MVC(Model-View-Controller)模式:(传统的模式,比如java、php中)

1 Model(模型): 数据层,负责处理应用程序的数据逻辑,包括数据库操作、数据验证、业务规则等。模型通常封装了与数据相关的操作,如增删改查。

2 View(视图): 用户界面层,负责显示数据并与用户进行交互。视图从模型中获取数据并呈现给用户,同时也接收用户输入,将其传递给控制器进行处理。

3 Controller(控制器): 控制层,负责协调模型和视图之间的交互,处理用户输入并作出响应。控制器接收用户的请求,根据请求调用相应的模型逻辑和视图进行响应。

2、MTV(Model-Template-View)模式:

1 Model(模型): 类似于 MVC 中的模型,处理数据逻辑,包括数据库操作和业务规则。

2 Template(模板): 类似于 MVC 中的视图,负责呈现数据给用户。模板是 HTML 文件,其中包含用于展示数据的标记和模板语法。

3 View(视图): 类似于 MVC 中的控制器,处理用户请求并与模型和模板进行交互。视图负责业务逻辑,将模型的数据传递给模板进行渲染,然后将渲染后的页面返回给用户。

主要区别在于 MTV 中的视图(View)不同于传统 MVC 中的控制器(Controller)。

在 Django 中,视图更专注于处理业务逻辑,从模型中获取数据并将其传递给模板进行渲染,然后返回渲染后的页面给用户。控制器的部分职责在 Django 的视图和模板中共同完成。

在 Django 的 MTV 架构中,模型(Model)处理数据逻辑,模板(Template)负责界面呈现,视图(View)则处理业务逻辑和请求响应。这种分层结构使代码更加清晰、模块化,有助于快速开发和维护高质量的 Web 应用程序。

二、ajax提交的json格式的数据

django后端不在把数据封装到request.POST中

提交json格式的数据必须满足两个条件:
1. 你的编码格式必须是json格式的:contentType参数
2. 你的数据必须是json {"a":1}

# 针对json格式的数据,Django后端又是如何处理的?
针对ajax提交的json格式的数据,django后端不在把数据封装到request.POST中了

# 对于json格式的数据,django后端不在做任何的封装,数据是纯原生的,发送过来的数据是二进制形式的
# 我们自己来处理这些二进制数据

# js中序列化
JSON.stringify({'a': 1, b: 2})  ----------》{'a': 1, b: 2} 对象
contentType:'application/json',
    
# django后端接收json格式的数据
json_str = request.body.decode('utf-8')
print(json_str)  # {"a":1,"b":2}

json_data = json.loads(json_str)
print(json_data)  # {'a': 1, 'b': 2}
print(json_data.get('a'))

三、批量插入数据

1、代码

 user_obj_list = []
    for i in range(100000):
        user_obj = models.UserInfo(username='jerry_%s' % i)
        user_obj_list.append(user_obj)
        print('jerry_%s' % i)

    '''开始操作数据库'''
    models.UserInfo.objects.bulk_create(user_obj_list)

user_obj = models.UserInfo(username='jerry_%s' % i) 是在一个循环中创建 models.UserInfo 类的实例,并将其添加到名为 user_obj_list 的列表中

如在数据库批量插入时,以减少与数据库的交互次数,从而提高性能。

在代码的最后,通过 models.UserInfo.objects.bulk_create(user_obj_list)user_obj_list 中的所有实例一次性批量插入到数据库中。这样可以减少每次插入操作的开销,从而更高效地存储大量数据。

 

posted @ 2023-08-08 23:53  凡人半睁眼  阅读(95)  评论(0)    收藏  举报