##Django框架图解

  ##前后端传输数据的编码格式

#前后端传输数据的编码格式1.urlencoded 2.formdata 3.application/json

  ##From表单和Ajax方式在前端往后端发送文件

form表单默认的编码格式是urlencoded不支持发文件(只能把文件名发过去)
它所对应数据格式 username=jason&password=123request.POST只能解析urlencoded数据格式的数据
formdata django会帮你把文件数据取出来  放入request.FILES里面   专门用来传文件的Ajax默认提交的编码格式也是urlencoded
当用ajax传输json格式的数据时候 django不会做任何处理
数据以二进制形式放在request.body中 你可以手动解码加反序列化拿到对应的字典格式数据Ajax发送json格式数据   $.ajax({            url:'',  // 不写默认朝当前页面所在的url地址提交            type:'post',            contentType:'application/json',//修改默认的编码格式            data:JSON.stringify({'name':'jason','csrfmiddlewaretoken':'{{ csrf_token }}'}), //将数据修改为json格式            success:function (data) {                alert(data)            }        })
ajax发送文件  利用js内置的FormData对象

def index(request):if request.method == 'POST':print(request.POST)print(request.FILES)# file_obj = request.FILES.get('myfile')# print(file_obj.name)  # 查看当前文件对象的文件名#form表单传过来的数据写入服务器本地文件(注意:编码不是默认的urlencoded,而是修改成enctype="multipart/form-data">)# with open(file_obj.name,'wb') as f:#     for line in file_obj:#         f.write(line)#ajax发过来的数据是以二进制数据单独在request.body中,可进行解码然后序列化得到数据字典格式# print(request.body)# bytes_str = request.body# res = json.loads(bytes_str.decode('utf-8'))# print(res,type(res))return render(request,'index.html')

后端核心代码

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Title</title><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
{#<form action="" method="post" enctype="multipart/form-data">#}
{#    {% csrf_token %}#}
{#    <p>username:<input type="text" name="username"></p>#}
{#    <p>password:<input type="password" name="password"></p>#}
{#    <p>image:<input type="file" name="myfile"></p>#}
{#    <input type="submit">#}
{#</form>#}<input type="file" name="myfile" id="d2">
<button id="d1">点我</button><script>$('#d1').click(function () {// 如果用ajax发送文件 需要使用内置对象FormDatavar formData = new FormData();  // 生成一个内置对象// 内置对象formdata既可以传普通的键值对,也可以传文件formData.append('name','jason');  // 普通键值对formData.append('password','123');// 传文件var fileObj = $('#d2')[0].files[0];  // 先获取标签对象 转成原生js对象 通过内置的files方法拿到列表 然后去索引0拿到文件对象formData.append('myfile',fileObj);$.ajax({url:'',  // 不写默认朝当前页面所在的url地址提交type:'post',// 注意ajax在发送文件的时候 需要你手动指定两个特殊的参数contentType:false,  // 不要用任何编码 使用我formdata自带的编码即可processData:false,  // 浏览器不要处理我的数据 是什么就什么data:formData,success:function (data) {alert(data)}})})
</script>
</body>
</html>

前端代码示例

 

 

  ##补充一下页面清缓存

 

转载于:https://www.cnblogs.com/liangzhenghong/p/11226088.html

Python Day 67 Dango框架图解(总结)、Wsgiref和uwsgi、前后端传输数据的编码格式、From表单和Ajax方式在前端往后端发送文件、补充一下页面清缓存...相关推荐

  1. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  2. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  3. SSM框架下实现form表单提交的方式

    实现form表单的提交有多种方式,这里我们主要讲两种常用的. 注:此Demo是在SSM框架下完成的,数据库采用MySQL,关于ssm整合的相关知识,这里不做过多赘述.主要展示表单提交方式,暂不考虑代码 ...

  4. elementUI框架:表单验证书写方式

    验证form,注意prop.rules指定的名字需一致: 也可以单独指定具体某一验证::rules="$rules.Login.userName" 校验方式 this.$refs[ ...

  5. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  6. Python的Django框架中forms表单类的使用方法详解2

    用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...

  7. 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作

    Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...

  8. Python Web开发——Django框架学习

    文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...

  9. python的前端和后端_python前端和后端数据交互,tornado框架入门,初学小试牛刀!...

    Python前端和后端是如何交互的,怎么用tornado框架快速搭建前端和后端数据交互? 前端与后端的数据交互,最常用的就是GET.POST,比较常用的用法是:提交表单数据到后端,后端返回json 前 ...

最新文章

  1. 数据库连接池为什么要用threadlocal呢?不用会怎样?
  2. Delphi 2007体验!
  3. 被墙怎么搭建安卓开发环境
  4. mysql游标遍历修改_mysql使用游标遍历数据进行批量针对性更新数据,急求mysql大神解答...
  5. HDU - 6598 Harmonious Army(最大流最小割)
  6. 你的工作经验到底值钱吗?
  7. Java多线程——同步问题
  8. 【Elasticsearch】elasticsearch shard 分片
  9. input之question
  10. 为什么我不再和别人比较了?
  11. 内联函数的常识性问题
  12. 计算机显卡驱动全部卸载,显卡驱动如何卸载重装?NVIDIA独立显卡驱动卸载重装的方法...
  13. linux 笔记本双显示器,Ubuntu设置笔记本电脑双显示器(linux)
  14. 微软的一道前端面试题
  15. css画不同角度空心箭头,css – 图像前面的空心箭头
  16. 【Windows】win10多桌面与多任务
  17. 有什么哪些便宜的云服务器推荐?
  18. 开源:全球软件产业四大发展趋势之一(转)
  19. 【运放学习】:虚短、虚短、虚地、深度负反馈
  20. 搜索引擎优化(SEO)----关键字

热门文章

  1. 装了mysql电脑黑屏怎么办_电脑黑屏的原因,教你解决黑屏
  2. QCC512x QCC302x earbud工程 LED 配置
  3. 基于JAVA的游戏补丁共享网站实现
  4. 唐山校友会会长苏伟与徐飞校长的一次短信交流
  5. BigDecimal.ROUND_的各种用法
  6. 软件测试工程师面试的时候该怎么样介绍自己?你的简历是不是该优化了
  7. 服务器隐藏文件夹怎样打开,局域网文件如何设置隐藏?服务器隐藏文件夹的方法...
  8. 面试和谈薪技巧及如何避开常见的陷阱
  9. R语言igraph软件包方法
  10. 阿里云镜像站repo文件