MTV和MVC、contentType、批量插入数据
一、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 应用程序。
二、
1、在Django项目中,前后端数据传输的编码格式(Content-Type)取决于HTTP请求头中的Content-Type
字段,它指定了请求或响应中的数据的编码方式。
以下是一些常见的前后端数据传输编码格式:
application/json: 这是传输JSON(JavaScript Object Notation)数据的常用编码格式。JSON是一种轻量级的数据交换格式,通常用于在前后端之间传递结构化数据。Django的Rest Framework等库广泛支持处理JSON数据。 application/x-www-form-urlencoded: 这是用于传输URL编码表单数据的默认编码格式。当通过HTML表单提交数据时,数据会被编码为URL查询字符串的形式,然后发送给服务器。 multipart/form-data: 这是用于上传文件和表单数据的编码格式。当通过HTML表单上传文件时,数据会被分解成多个部分,并使用multipart/form-data进行编码。 text/plain: 这是纯文本数据的编码格式,通常不常用于传输结构化数据,而是用于传输纯文本内容。 application/xml: 这是传输XML(Extensible Markup Language)数据的编码格式。虽然在某些情况下仍然使用,但相对于JSON来说已经较少使用。
2、针对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'))
三、
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
中的所有实例一次性批量插入到数据库中。这样可以减少每次插入操作的开销,从而更高效地存储大量数据。