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存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
随机推荐
- IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository
转自:IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository 今天将IntellIJ IDEA 关于Maven的配置总结一下,方便以后可参考. IDEA版本: Intel ...
- tomcat server.xml结构
所有xml文件使用的文件头 <?xml version='1.0' encoding='utf-8'?> 2 <Server port="8005" shutdo ...
- Android Connection refused
遇到 Connection refused的错误. AndroidManifest.xml 文件中添加: //网络权限 <uses-permission android:name=" ...
- 一道php笔试题
原文地址: http://www.walu.cc/php/a-bishiti.md 问题: 请找出下面代码中的问题,修复并优化. <?php //批量注册用户,每次>100个. //注册新 ...
- 搭建Linux下的SVN服务器
______________________________________________配置SVN步骤______________________________________________ ...
- 「POI2011 R2 Day2」Tree Rotations【线段树合并】
题目链接 [BZOJ] [洛谷] [LOJ] 题解 由于是前序遍历,那么讨论一棵树上的逆序对的情况. 两个节点都在左子树上 两个节点都在右子树上 两个节点分别在不同的子树上. 前两种情况其实也可以归结 ...
- Docker proxy
Method One: mkdir /etc/systemd/system/docker.service.dvim /etc/systemd/system/docker.service.d/http- ...
- HAOI2018苹果树
题解 首先所有生成树的情况树是\(n!\)的,因为第一次有1中方法,第二次有两种放法,以此类推... 然后我们发现距离这种东西可以直接枚举每条边算贡献. 于是我们枚举了一个点\(i\),又枚举了这个点 ...
- GWAS群体分层校正,该选用多少个PCA
前言 关于选用多少个PCA做群体分层校正,各大期刊并没有一个统一的说法. 故做了如下综述. 1 随心所欲型,想选多少就选多少 PCA想选多少就选多少,这个真的不是开玩笑.有文献出处有真相! 比如下面文 ...
- python静态属性的理解
python中并没有像 C语言 C++ java 那样定义静态属性的关键字 static 那么在python中是怎么做的呢? class A(object): name="lance&quo ...