```
Ajax
前端朝后端发送请求都有哪些方式
a标签href GET请求
浏览器输入url GET请求
form表单 GET/POST请求
Ajax GET/POST请求 前端朝后端发送数据的编码格式
contentType参数,用来表示前端朝后端发送数据的编码格式
urlencoded:name=jason&pwd=123 request.POST # urlencoded是form表单和ajax提交数据默认的编码方式
formdata:request.FILES
appliction/json:request.body bytes格式 ajax特点:
1.异步提交
2.局部刷新 ajax与form表单的不同点:
1.form表单提交的数据格式只能是urlencoded和formdata,它不支持json格式数据
2.form表单提交数据,页面会刷新
3.ajax局部刷新,异步提交,并且支持发送json格式数据
``` ​ ```
小需求:页面上渲染三个input前两个输入数字,点击计算按钮,第三个得出两者之和
前端代码:
<input type='text' id='i1'/> + <input type='text' id='i2'/> = <input type='text' id='i3'/>
<button id='b1'></button>
# ajax初识
$('#b1').click(function () {
$.ajax({
url:'',
type:'POST',
data:{i1:$('#i1').val(),i2:$('#i2').val()},
success:function (data) {
$('#i3').val(data)
}
})
}) ajax提交数据必备的几个参数
1.往哪提交 ulr控制
2.提交方式 type控制
3.提交的数据 data
4.提交后端处理之后的结果 success:function(){} $.ajax({
// 前面的变量值都是固定写法,url,type,data
url:'', // 提交的路径
type:'post', // 提交的方式
data:{'name':'jason'}, // 提交的数据 # 默认数据传输默认也是urlencoded编码格式
success:function (data) { // 回调函数,会将后端处理好的数据传给data形参
alert(data)
}
}) ajax提交json格式数据
1.需要告诉后端此次发送的数据为json格式
2.告诉后端数据时什么格式,你在传的时候,数据就应该对应是什么格式
$('#d1').click(function () {
$.ajax({
// 前面的变量值都是固定写法,url,type,data
url:'', // 提交的路径
type:'post', // 提交的方式
data:JSON.stringify({'name':'jason','age':''}), // 提交的数据
contentType:'application/json', // 告诉后端当前数据的格式为json格式 # 编码格式与数据类型必须一致,不能骗人!
success:function (data) { // 回调函数,会将后端处理好的数据传给data形参
$('#i3').val(data)
}
})
})
``` ​
​ ```
request.POST只能解析 编码格式为urlencoded以及text/plain
``` ​ ```
ajax传文件(固定写法!) 几个必须注意点:
1.必须用内置对象:new FormData
2.获取input框文件对象:$('#i1')[0].files[0]
3.指定两个参数为false:
processData:false, // 不要处理我的数据 name=jason&password=123
contentType:false, // 不需要指定任何编码,就按照我的formdata内部的数据格式即可
4.后端按正常的文件上传从request.FILES里面获取文件对象
5.formdata也支持传普通的键值对,后端仍然可以在request.POST里面获取到 $("#btn").click(function () {
//上传文件,必须用FormData,生产一个formdata对象
var formdata=new FormData();
formdata.append('name',$("#name").val()); # 也支持传键值对的数据
//取出文件$("#myfile")[0].files拿到的是文件列表,取第0个把具体的文件取出来
formdata.append('myfile',$("#myfile")[0].files[0]);
$.ajax({
url:'/index/',
type:'post',
//不预处理数据,(name=lqz&age=18)
processData:false,
//指定往后台传数据的编码格式(urlencoded,formdata,json)
//现在用formdata对象处理了,就不需要指定编码格式了,不要给我编码了
contentType:false,
data:formdata,
success:function (data) {
alert(data)
}
}) 后端
def plus(request):
if request.method == 'POST':
print(request.FILES)
file_obj = request.FILES.get('myfile')
with open(file_obj.name,'wb') as f:
for line in file_obj:
f.write(line)
return HttpResponse('ok')
return render(request,'index.html')
``` ​ ```
批量插入数据
# 批量插入数据
l = []
for i in range(1000):
l.append(models.Book(name='第%s本书'%i))
models.Book.objects.bulk_create(l) 分页器
页数通常都取奇数页,为的是符合中国人的审美标准(对称美)
自定义分页器使用
后端:
# 固定用法 获取用户想访问的当前页
page = request.GET.get('page',1)
# 实例化分页器对象
page_obj = Pagination(current_page=page,all_count=book_queryset.count())
# 对总数据对象进行切片
page_queryset = book_queryset[page_obj.start:page_obj.end]
前端:
{{ page_obj.page_html|safe }}
不需要自己写,拷贝过去直接即可,
只需要你知道使用方法即可.内部逻辑感兴趣的可以去研究一下
``` ​




​ ```
django settings配置文件
由来:为什么我在用django配置的时候导入的不是我项目名下的那个settings
但是我配置了之后依然能够起作用,这是为什么?
from django.conf import settings # 入口 settings = LazySettings() # 单例 from django.conf import global_settings
class LazySettings(LazyObject):
def _setup(self, name=None):
settings_module = os.environ.get(ENVIRONMENT_VARIABLE) # 获取全局的键值对,在manage.py中启动时就已经设置了一个
self._wrapped = Settings(settings_module) class Settings(object):
def __init__(self, settings_module):
for setting in dir(global_settings): # 先获取系统默认配置里面的所有的变量名
if setting.isupper():
setattr(self, setting, getattr(global_settings, setting)) # 给settings对象设置键值对
self.SETTINGS_MODULE = settings_module
mod = importlib.import_module(self.SETTINGS_MODULE) for setting in dir(mod):
if setting.isupper():
setting_value = getattr(mod, setting)
setattr(self, setting, setting_value) # 给settings对象设置键值对
```

django ajax 及批量插入数据 分页器的更多相关文章

  1. [Django高级之批量插入数据、分页器组件]

    [Django高级之批量插入数据.分页器组件] 批量插入数据 模板层models.py from django.db import models class Books(models.Model): ...

  2. Django orm 实现批量插入数据

    Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...

  3. Django向数据库批量插入数据

    # 如何向数据库一次性插入多条数据 # 方法一:效率极低,不推荐使用 for i in range(1000): models.Book.objects.create(title=f'第{i}本书') ...

  4. Django --- ajax结合sweetalert使用,分页器,bulk_create批量创建数据

    目录 ajax结合sweetalert使用 bulk_create批量插入数据 分页器的使用 ajax结合sweetalert使用 ajax可以在不刷新页面的情况下与后端进行交互,在对数据进行操作的时 ...

  5. django与ajax:ajax结合sweetalter ,批量插入数据 ;分页器组件

    目录 一.ajax结合sweetalter 二.bulk_create批量插入数据 三.简易版分页器推导 1. 推导步骤 四.自定义分页器的使用 1. 自定义分页器模板 2. 使用方法 (1)后端代码 ...

  6. Django批量插入数据和分页器

    目录 一.ajax结合sweetalert实现删除按钮动态效果 二.bulk_create批量插入数据 1. 一条一条插入 2. 批量插入 三.自定义分页器 一.ajax结合sweetalert实现删 ...

  7. django----Sweetalert bulk_create批量插入数据 自定义分页器

    目录 一.Sweetalert使用AJAX操作 二.bulk_create 三.分页器 divmod 分页器组件 自定义分页器的使用 一.Sweetalert使用AJAX操作 ​ sweetalert ...

  8. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  9. .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库

    批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...

随机推荐

  1. 回温js算法

    ---恢复内容开始--- 一,冒泡排序. 具体算法描述如下: <1>.比较相邻的元素.如果第一个比第二个大,就交换它们两个: <2>.对每一对相邻元素作同样的工作,从开始第一对 ...

  2. codeforces675D

    Tree Construction CodeForces - 675D During the programming classes Vasya was assigned a difficult pr ...

  3. [PRIMITIVE TECHNOLOGY]澳洲小哥的黑皮豆/black been/摩顿湾板栗(栗子)/Moreton Bay Chestnut

    wiki:https://en.wikipedia.org/wiki/Castanospermum inner:http://blog.sciencenet.cn/blog-309517-770951 ...

  4. Re.多项式求逆

    前言 emmm暂无 多项式求逆目的 顾名思义 就是求出一个多项式的摸xn时的逆 给定一个多项式F(x),请求出一个多项式G(x),满足F(x)∗G(x)≡1(modxn),系数对998244353取模 ...

  5. JavaScript DOM 高级程序设计读书笔记二

    响应用户操作和事件 事件就是操作检测与脚本执行的组合,或者基于检测到的操作类型在某个对象上调用事件侦听器(事件处理程序). 事件的类型 事件可以分为几种类型:对象事件,鼠标事件,键盘事件(只适用于do ...

  6. Python的开发之路

    一.python入门 二.基本数据类型 三.输入与输出 四.基本运算符 五 .流程控制之if判断 六.流程控制之while循环 七.流程控制之for循环 八.数据类型与内置方法 九.文件的处理 十.字 ...

  7. 在centos 7 下安装 nginx

    在Linux下安装 nginx 1下载对应当前系统版本的nginx包(package) wget  http://nginx.org/packages/centos/7/noarch/RPMS/ngi ...

  8. TODO springboot学习笔记

    学习中,是在是搞不懂是什么狗屎....

  9. IP地址类型

    为了适应不同的网络,IP地址空间被分为5类,分别是A.B.C.D和E类,其中A,B,C类最常用,D类用于组播,E类用于科研 IP地址类型 第一字节十进制范围 二进制固定最高位 二进制网络位 二进制主机 ...

  10. 一文了解Python的线程

    问题 什么是线程? 如何创建.执行线程? 如何使用线程池ThreadPoolExecutor? 如何避免资源竞争问题? 如何使用Python中线程模块threading提供的常用工具? 目录 1. 什 ...