```
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. Win 10 Edge不能上网,微软商店打不开的问题

    微软商店(Microsoft Store)的 Code: 0x80072EE7 Check Your Connection问题,和Edge的Can't Reach this page的问题.网上找了很 ...

  2. Conda常见命令

    Anaconda,Miniconda,Conda,Pip的区别: Anaconda:用于科学计算的python发行版,里面预装好了conda,某个版本的python,众多packages,科学计算工具 ...

  3. Dlib Python 检测人脸特征点 Face Landmark Detection

    首先安装Dlib,Opencv库 Dlib安装链接:http://www.cnblogs.com/as3asddd/p/7237280.html 环境:Mac Sierra 10.12.1 Pytho ...

  4. python并发编程之多进程基础知识点

    1.操作系统 位于硬件与应用软件之间,本质也是一种软件,由系统内核和系统接口组成 和进程之间的关系是: 进程只能由操作系统创建 和普通软件区别: 操作系统是真正的控制硬件 应用程序实际在调用操作系统提 ...

  5. How to expand Azure VM OS Disk

    There are three main disk roles in Azure: the data disk, the OS disk, and the temporary disk. 1. OS ...

  6. Python基础7:字符串方法

    1 * 重复输出字符串 print('helo '*4) 2 [],[:] 通过索引获取字符串中的字符,这里和列表中的切片操作是相同的,具体内容见列表 print('hello word'[2:]) ...

  7. BZOJ 3157: 国王奇遇记 (数学)

    题面:BZOJ3157 一句话题意: 求: \[ \sum_{i=1}^ni^m\ \times m^i\ (mod\ 1e9+7)\ \ (n \leq 1e9,m\leq200)\] 题解 令 \ ...

  8. CF739E Gosha is hunting DP+wqs二分

    我是从其他博客里看到这题的,上面说做法是wqs二分套wqs二分?但是我好懒呀,只用了一个wqs二分,于是\(O(nlog^2n)\)→\(O(n^2logn)\) 首先我们有一个\(O(n^3)\)的 ...

  9. Servlet生命周期 和 继承关系

    三 servlet的生命周期 (一个servlet类的对象 创建---->销毁) 第一次访问 某个servlet的时候 首先调用其 构造函数 public StudentServlet(){ S ...

  10. Kubernetes fluentd+elasticsearch+kibana

    前提:dns服务,k8s集群 下载kubernetes,并解压 https://github.com/kubernetes/kubernetes/releases tar zxvf kubernete ...