django ajax 及批量插入数据 分页器
```
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 及批量插入数据 分页器的更多相关文章
- [Django高级之批量插入数据、分页器组件]
[Django高级之批量插入数据.分页器组件] 批量插入数据 模板层models.py from django.db import models class Books(models.Model): ...
- Django orm 实现批量插入数据
Django ORM 中的批量操作 在Hibenate中,通过批量提交SQL操作,部分地实现了数据库的批量操作.但在Django的ORM中的批量操作却要完美得多,真是一个惊喜. 数据模型定义 首先,定 ...
- Django向数据库批量插入数据
# 如何向数据库一次性插入多条数据 # 方法一:效率极低,不推荐使用 for i in range(1000): models.Book.objects.create(title=f'第{i}本书') ...
- Django --- ajax结合sweetalert使用,分页器,bulk_create批量创建数据
目录 ajax结合sweetalert使用 bulk_create批量插入数据 分页器的使用 ajax结合sweetalert使用 ajax可以在不刷新页面的情况下与后端进行交互,在对数据进行操作的时 ...
- django与ajax:ajax结合sweetalter ,批量插入数据 ;分页器组件
目录 一.ajax结合sweetalter 二.bulk_create批量插入数据 三.简易版分页器推导 1. 推导步骤 四.自定义分页器的使用 1. 自定义分页器模板 2. 使用方法 (1)后端代码 ...
- Django批量插入数据和分页器
目录 一.ajax结合sweetalert实现删除按钮动态效果 二.bulk_create批量插入数据 1. 一条一条插入 2. 批量插入 三.自定义分页器 一.ajax结合sweetalert实现删 ...
- django----Sweetalert bulk_create批量插入数据 自定义分页器
目录 一.Sweetalert使用AJAX操作 二.bulk_create 三.分页器 divmod 分页器组件 自定义分页器的使用 一.Sweetalert使用AJAX操作 sweetalert ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- .Net批量插入数据到SQLServer数据库,System.Data.SqlClient.SqlBulkCopy类批量插入大数据到数据库
批量的的数据导入数据库中,尽量少的访问数据库,高性能的对数据库进行存储. 采用SqlBulkCopy来处理存储数据.SqlBulkCopy存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
随机推荐
- 结构体中.和->两种访问区别
定义结构体指针,访问成员时就用->定义结构体变量,访问成员时就用. 例如:struct A { int a; char b;}; struct A q; 访问成员就用:q.a;struct A ...
- jQuery的事件处理
一.页面加载响应事件 $(document).ready()方法,获取文档就绪的时候.他极大地提高了Web相应速度.虽然该方法可以代替传统的window.onload()方法,但是两者之间仍然有差别. ...
- 关于解决Tomcat服务器Connection reset by peer 导致的宕机
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer at ...
- iptables防火墙规则积累
1.内网IP地址端口映射: 通过访问本机地址的3389端口,可以访问到192.168.1.139的远程桌面服务: -A PREROUTING -p tcp -m tcp --dport 3389 ...
- 思维导图读PMbok第6版 - 项目整合管理(21张全讲)
“ 3个月,800多页书,一大堆工作,复习时间不够呀?老师用思维导图解析PMP,思维导图解析PMP梳理PMbok第6版逻辑结构,帮你您全局掌握PMP知识,重点掌握PMbok难点.快速记忆PMP知识,思 ...
- Codeforces Round #554 (Div. 2) B. Neko Performs Cat Furrier Transform(思维题+log2求解二进制位数的小技巧)
传送门 题意: 给出一个数x,有两个操作: ①:x ^= 2k-1; ②:x++; 每次操作都是从①开始,紧接着是② ①②操作循环进行,问经过多少步操作后,x可以变为2p-1的格式? 最多操作40次, ...
- SpringBoot入门:Hello World
1.Open IDEA,choose "New-->Project" 2.Choose "Spring Initializr" 3. Choose jav ...
- git合并常见冲突
如果一个文件在服务器上已经做了修改,然后在本地开发中又做了一些修改的时候,再发布这个文件时很容易造成代码冲突,错误如下, error: Your local changes to the follow ...
- Matplotlib图例
折线图示例 #!/usr/bin/python2.7 import numpy as np from matplotlib import pyplot as plt from dbtools impo ...
- (五)聊一聊深Copy与浅Copy
一.关于浅copy与深copy 首先说明一下: 在python中,赋值其实就是对象的引用,变量就是对象的一个标签,如果把内存对象比喻成一个个房间,那么变量就是门牌号. 深copy与浅copy只是针对可 ...