预备知识:
什么是Json? 定义:json是一种轻量级的数据交换格式。
如果我们要在不同的编程语言中传递对象,就必须把对象序列化为标准格式,比如XML,但那是以往的时代,现在大多数使用序列化为json,因为json本身就是一个字符串,层次清晰,易阅读可以被所有语言读取,也方便的存储到磁盘和网络传输。
格式:一个无序的key:value集合。{"k1":"v1","k2":"v2"} 在程序运行过程中。所有的变量都是存在内存中。一旦程序结束,变量也会被销毁。
所以:
序列化:我们把变量从内存中变成可存储或者可传输的过程称为序列化
反序列化:把变量内容从序列化的对象重新读取到内存里称为反序列化 在js里面有两个常用方法实现json字符串和json对象互转 json对象---json字符串
JSON.stringify():
console.log(JSON.stringify({'name':'xjm')); json字符串---js对象
JSON.parse()
console.log(JSON.parse('{"name":"xjm})');
注意:
json对象属性名必须是双引号
不能使用undefined;
不能是函数和日期对象
Ajax
ajax:翻译成中文就是异步JavaScript和XML。就是使用JavaScript语言与服务器进行异步交互,传输的数据为xml,当然现在不只是xml,更多的是使用Json数据 特点:
异步交互:客户端发出一个请求后,无需等服务器响应结束,就可以发出第二个请求
局部刷新:给用户的感受是在不知不觉中完成请求和响应过程,无需刷新整个页面
场景:
注册的错误提示:该用户已注册、该用户名已被使用等
百度等搜索引擎的输入框提示:输入一个python关键词后会出现一个下拉列表,这里用到了ajax技术,当输入框输入变化时,浏览器会偷偷向服务器发送一个请求,然后接收响应显示。
基于Jquery的Ajax实现
 <button class="send_Ajax">send_Ajax</button>
<script> $(".send_Ajax").click(function(){ $.ajax({
url:"/handle_Ajax/",
type:"POST",
data:{username:"Yuan",password:},
success:function(data){
console.log(data)
},
error: function (jqXHR, textStatus, err) {
console.log(arguments);
}, complete: function (jqXHR, textStatus) {
console.log(textStatus);
}, statusCode: {
'': function (jqXHR, textStatus, err) {
console.log(arguments);
}, '': function (jqXHR, textStatus, err) {
console.log(arguments);
}
}
})
})
</script>
$.ajax()参数

    请求参数:
url:请求路径
type:请求类型,默认get
data:{a:1,b:2} ajax默认get请求 默认urlencoded编码类型提交数据 /?a=1&b=2
processData:声明当前的data数据是否进行转码或预处理 默认True
contentType:发送数据时的编码类型
  
  请求头ContentType
  是指请求体的编码类型,常见的有三种:     1、application/x-www-form-urlencoded   最常见的post提交数据的方式,form表单如果不设置enctype属性,那么默认就是这种方式提交

   POST http://www.123@qq.com HTTP:/1.1
   Content-Type:application/x-www-form-urlencoded;charset=utf-8 username=jzy&age=22
   2 、multipart/form-data
   这也是一个常见的post提交数据的方式。我们使用表单上传文件时,必须在form中添加enctype=multipart/form-data/   Content-Disposition: form-data; name="file"; filename="chrome.png"
   Content-Type: image/png   3、application/json
  这个作为响应头大家应该不陌生,但是现在越来越多的人把它作为请求头。用来告诉服务端消息主体是序列化后的json字符串。
    响应参数:
dataType:预期服务端返回的数据类型,服务端返回的数据会根据这个值解析后,传递给回调函数。
csrf跨站请求伪造
     data:{
"csrfmiddlewaretoken":$("[name='csrfmiddlewaretoken']").val();
} $.ajax({
headers:{"X-CSRFToken":$.cookie('csrftoken')}
})
基于form表单的文件上传
    模板部分:
<form action="" method="post" enctype="multipart/form-data">
用户名 <input type="text" name="user">
头像 <input type="file" name="avatar">
<input type="submit">
</form>
视图部分:
def index(request):
print(request.body) # 原始的请求体数据
print(request.GET) # GET请求数据
print(request.POST) # POST请求数据
print(request.FILES) # 上传的文件数据 return render(request,"index.html")
基于Ajax的文件上传
 模版部分
<h3>基于Ajax文件上传</h3>
<form>
用户名:<input type="text" id="user">
密码:<input type="password" id="pwd">
<p>头像:<input type="file" id="head_imgurl"></p>
<!--input 的type类型一定不能是submit-->
<input type="button" value="Json" class="json按钮">
<input type="button" value="Ajax" class="ajax按钮">
</form> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script> //发送json数据
$('.json').click(function () {
$.ajax({
url: '',
type: 'post',
contentType: 'application/json',
data: JSON.stringify({
a: ,
b:
}),
success: function (data) {
console.log(data)
}
})
}); //ajax文件上传
$('.ajax').click(function () {
var formdata=new FormData();
formdata.append("user",$('#user').val());
formdata.append("pwd",$('#pwd').val());
formdata.append("head_imgurl",$('#head_imgurl')[].files[])
$.ajax({
url:'',
type:'post',
contentType:false, // 不设置内容类型
processData:false, // 不处理数据
data:formdata,
success:function (data) {
console.log(data);
}
})
})
</script>
视图部分
def file_put(request):
if request.method == 'POST':
print(request.body) # 请求报文
print(request.POST) # 只有请求头是urlencoded时,才有数据 # data = request.body.decode('utf-8')
# import json
# print(json.loads(data).get('a'))
# print(json.loads(data).get('b')) # user = request.POST.get('user') # 获取文件对象
file_obj = request.FILES.get('head_imgurl') # 文件名称:file_obj.name
with open(file_obj.name,'wb') as f:
for line in file_obj:
f.write(line)
return HttpResponse('ok') return render(request,'file_put.html')

010---Django与Ajax的更多相关文章

  1. python Django之Ajax

    python Django之Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步 ...

  2. django 接受 ajax 传来的数组对象

    django 接受 ajax 传来的数组对象 发送:ajax 通过 POST 方式传来一个数组 接收:django 接受方式 array = request.POST.getlist(‘key[]’) ...

  3. python 全栈开发,Day75(Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件)

    昨日内容回顾 基于对象的跨表查询 正向查询:关联属性在A表中,所以A对象找关联B表数据,正向查询 反向查询:关联属性在A表中,所以B对象找A对象,反向查询 一对多: 按字段:xx book ----- ...

  4. Django使用AJAX调用自己写的API接口

    Django使用AJAX调用自己写的API接口 *** 具体代码和数据已上传到github https://github.com/PythonerKK/eleme-api-by-django-rest ...

  5. Django与Ajax,文件上传,ajax发送json数据,基于Ajax的文件上传,SweetAlert插件

    一.Django与Ajax AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻 ...

  6. Django之Ajax提交

    Ajax 提交数据,页面不刷新 Ajax要引入jQuery Django之Ajax提交 Js实现页面的跳转: location.href = "/url/" $ajax({ url ...

  7. Django框架第九篇--Django和Ajax、序列化组件(serializers)、自定义分页器、模型表choice参数

    Django和Ajax 一.什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语 ...

  8. Django之AJAX传输JSON数据

    目录 Django之AJAX传输JSON数据 AJAX 中 JSON 数据传输: django响应JSON类型数据: django 响应 JSON 类型数据: Django之AJAX传输JSON数据 ...

  9. Django之ajax(jquery)封装(包含 将 csrftoken 写入请求头方法)

    由于支持问题,未使用 es6 语法 _ajax.js /** * 发起请求 * @param url 请求地址 * @param data 请求数据 { } json格式 * @param type ...

  10. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

随机推荐

  1. Refactoring in Coding

    Make changes on existing code for subsequent and constant changes of requirement. Reference:http://w ...

  2. JQuery中Checkbox选择

    判断是否选中 $(this).is(":checked") 取消选中 $(this).prop("checked", false) 选中 $(this).pro ...

  3. Azure 7 月新公布

    Azure 7月新发布:Cosmos DB,事件中心捕捉功能,Hybrid Connections,流量管理器快速故障转移功能. 您现有的 DocumentDB 资源现已作为 Azure 门户上 Az ...

  4. Build 2017 | 今儿来说说火得不行的认知服务吧(内附微软开发者大会在线峰会报名地址)

    Everybody,新一期的 Build 2017 大会新技术详谈又来了,今天小编给大家带来了一个既智能又有趣的技术,你一定喜欢!不卖关子了,直奔我们本期的主题: [只需几行代码,就能让任何应用更智能 ...

  5. Linux命令之查看服务进程(ps aux、ps -aux、ps -ef)的运用

    执行ps命令即可列出的是当前服务器进程的快照(时间点),如果想要实时动态的显示进程信息,就可以使用top命令. linux上进程有5种状态:  1. 运行(正在运行或在运行队列中等待)  2. 中断( ...

  6. 【转载】SQL执行计划

    要理解执行计划,怎么也得先理解,那各种各样的名词吧.鉴于自己还不是很了解.本文打算作为只写懂的,不懂的懂了才写. 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的. ...

  7. windows 2008 R2-Zabbix server 3.0监控主机的加入

    一.关闭windows防火墙或者开通10050和10051端口 (1).关闭防火墙 开始—控制面板—windows防火墙 按照要求关闭防火墙 (2).开通端口 1.开始—管理工具--高级安全windo ...

  8. centos 7(1611)安装笔记

    麻烦   前天我把双系统笔记本里的 deepin 的磁盘分区直接从 Windows 7 磁盘管理里格式化了,结果悲催了,开不了机了,显示: 我以为是 Windows 7 的引导没了,就进 PE 修复了 ...

  9. PHP : 封装跳转函数,实现三个页面的跳转

    具体实现:有a,b两个页面,一个跳转页面c,在a执行完后先进行c页面的提示,再跳转到b 1.文件设计: 2.c页面封装方法内容(function.php): a页面内容(a.html): a页面的后台 ...

  10. 377. Combination Sum IV 70. Climbing Stairs

    back function (return number) remember the structure class Solution { int res = 0; //List<List< ...