Django中ajax技术和form表单两种方式向后端提交文件

简介: 一、Form表单方式提交:form表单提交文件或者图像时需要对form中的属性进行如下设置:1、method="post" //提交方式 post2、enctype="multipart/form-data" //不对字符编码。

一、Form表单方式提交:
form表单提交文件或者图像时需要对form中的属性进行如下设置:
1、method="post" //提交方式 post
2、enctype="multipart/form-data" //不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
3、action="/code/" //提交给哪个url

code.html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>代码统计</title>
</head>
<body>
<form method="post" enctype="multipart/form-data"     action="/code/">
{% csrf_token %}
<input type="file" name="file" value="上传文件">
<button type="submit" id="btn">提交</button>
</form>
</body>
</html>

url

url(r'code/$',views.code)

views.py

def code(request):
    if request.method == "POST":
        filename = request.FILES['file'].name
        with open(filename, 'wb') as f:
            for chunk in request.FILES['file'].chunks():
                f.write(chunk)
        return HttpResponse('上传成功')
    return render(request, 'code.html')

二、ajax方式提交文件:
直接上代码吧,代码有注释
code.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>代码统计</title>
</head>
<body>
<form>
    {% csrf_token %}
    <input type="file" name="file" value="上传文件">
    <button type="button" id="btn">提交</button>
</form>

<script src="/static/js/jquery-3.3.1.js"></script>
<script>
    $("#btn").click(function () {
        //创建一个FormData对象用来存储数据
        var file_obj = new FormData;
        //通过jquery的的属性操作找到上传的文件,
        // 注意files方法是js对象的特有的方法,所以需要将jquery对象索引转化成js对象调用此方法
        file_obj.append('file', $("input[type='file']")[0].files[0]);
        //jquery的属性操作获取csrftoken值来防御CSRF攻击
        file_obj.append('csrfmiddlewaretoken',     $('[name=csrfmiddlewaretoken]').val());
        $.ajax({
            url: '/code/',
            type: 'post',
           processData: false,//不让jQuery处理我的file_obj
            contentType: false,//不让jQuery设置请求的内容类型
            data: file_obj,
            //成功回调函数
            success: function (res) {
                console.log(res.msg)
            }
        })
    })
</script>
</body>
</html>

url:

  url(r'code/$',views.code)

views.py:

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
def code(request):
    res={'code':0}
    if request.method == "POST":
        file_obj = request.FILES['file']
        filename = file_obj.name
        with open(filename, 'wb') as f:
            for chunk in file_obj.chunks():
                f.write(chunk)
        res['msg'] = '上传成功'
        return JsonResponse(res)
    return render(request, 'code.html')
相关文章
|
6月前
|
JavaScript 前端开发 容器
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
AJAX载入外部JS文件到页面并让其执行的方法(附源码)
66 0
|
2月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
97 2
|
17天前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
33 1
|
3月前
|
XML 存储 前端开发
后端程序员的前后端交互核心-Ajax
后端程序员的前后端交互核心-Ajax
54 6
后端程序员的前后端交互核心-Ajax
|
3月前
|
前端开发 Java UED
告别页面刷新时代:Struts 2 Ajax技术揭秘,轻松实现动态加载,Web应用焕然一新!
【8月更文挑战第31天】在Web应用开发中,用户体验至关重要。为减少页面刷新带来的不适,Ajax技术应运而生。Struts 2作为流行的Java EE框架,通过内置的Ajax支持简化了无刷新页面动态加载的实现。本文通过对比传统请求响应模式,展示了Struts 2如何轻松实现Ajax功能,提升了用户体验和开发效率,并灵活地实现了数据交换。然而,使用Ajax时还需注意SEO和跨域请求等局限性。
44 0
|
3月前
|
JSON 前端开发 JavaScript
Django入门到放弃之ajax
Django入门到放弃之ajax
|
4月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
【7月更文挑战第15天】Python后端(Django/Flask)与前端通过AJAX或Fetch API实现异步交互,提升Web应用体验。Python提供强大的后端支持,AJAX用于不刷新页面的数据交换,Fetch API作为现代标准,基于Promise简化HTTP请求。结合两者,构建高效、流畅的交互系统,优化响应速度和用户体验,开启Web开发新篇章。
82 5
|
4月前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
70 3
|
5月前
|
前端开发 Python
Django框架中Ajax GET与POST请求的实战应用
Django框架中Ajax GET与POST请求的实战应用
|
5月前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
下一篇
无影云桌面