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存储大批量的数据非常的高效,将内存中的数据表直接的一次性的存储 ...
随机推荐
- 微信小程序音乐播放
最近在写一个艾美食艾音乐的微信小程序,其中有用到音乐播放的功能,基本播放切换功能已经实现,但是在反复切换歌曲.重新进入歌曲以及单曲循环.列表循环的测试过程中还是发生了bug,特此写一篇文章,捋一下思路 ...
- 使用cURL尝试ElasticSearch
测试环境:debian 9官网提供了 deb,rpm,源码下载 官方下载地址:https://www.elastic.co/downloads/elasticsearch 通过源码安装会遇到一些小问题 ...
- odoo10源码 windows环境安装
odoo10-windows开发环境(源码安装) 安装node 下载地址 http://nodejs.cn/download/ 安装教程https://www.cnblogs.com/zhouyu20 ...
- 机器学习---感知机(Machine Learning Perceptron)
感知机(perceptron)是一种线性分类模型,通常用于二分类问题.感知机由Rosenblatt在1957年提出,是神经网络和支持向量机的基础.通过修改损失函数,它可以发展成支持向量机:通过多层堆叠 ...
- git只追踪特定类型的文件
比如我只关心所有office文档并排除掉~开头的辅助文件: * !*/ !*.docx !*.doc !*.xlsx ~*
- [rhel]安装oracle11g
https://www.linuxidc.com/Linux/2017-04/142562.htm
- virtualbox+ubuntu
https://jingyan.baidu.com/article/7f766daff541cd4101e1d0cd.html ubuntu 安装 这台计算机似乎没有安装操作系统 待解决 注意ubun ...
- Spring Security 登录校验 源码解析
传统情况下,在过滤器中做权限验证,Spring Secuirty也是在Filter中进行权限验证. 创建并注册过滤器 package com.awizdata.edubank.config; impo ...
- hive字段名、注释中文显示问号
问题如下图: 解决方法: header1的/etc/my.conf文件,在[mysqld]分组下面添加配置:character-set-server=utf8init_connect='SET NAM ...
- Eclipse - 安装lombok后注解无效
安装 lombok lombok 的安装过程挺简单的,网上已经有很多相关的博客,这里就不在多说了,可以参考这篇:eclipse集成lombok注解不起作用 但是我按照网上的方式安装之后,注解一直不起作 ...