前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/jquery.cookie.js"></script>
</head>
<body>
<h1>文件上传页面</h1>
<form action="/upload/" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>用户名:<input type="text" name="username"></p>
<p>文件:<input type="file" name="file"></p>
<input type="submit" value="提交"><span>{{ successful }}</span>
</form>
</body>
</html>

后端处理:

def upload(request):
if request.method == "GET":
return render(request,"upload.html")
else:
file_obj = request.FILES.get("file")
with open(file_obj.name,"wb") as f:
for line in file_obj:
f.write(line)
successful = "上传成功"
return render(request,"upload.html",locals())

效果图:


利用formdata上传文件:

用formdata上传需要先建立一个对象,然后这个对象吧里面的值append进去,串数据的时候直接把formdate串过去就好了

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/jquery.cookie.js"></script>
</head>
<body>
<form action="" id="s1">
<p>姓名:<input type="text"></p>
<p>密码:<input type="password"></p>
<p>头像:<input type="file" id="upload" name="file"></p>
</form>
<p><button class="Ajax_send">Ajax_send</button><span class="login_error"></span></p> #button需要放在form表单外边 </body> <script>
function foo() {
$(".login_error").html("")
}
$(".Ajax_send").click(function () {
var formDate = new FormData();
formDate.append("username",$(":text").val());
formDate.append("password",$(":password").val());
formDate.append("avatar",$("#upload")[0].files[0]);

$.ajax({
url:"/ajax_form/",
type:"POST",
headers:{"X-CSRFToken":$.cookie('csrftoken')},
data:formDate,
contentType:false,
processData:false,
success:function (data) {
var data = JSON.parse(data);
if(!data["flag"]){
$(".login_error").html("用户名或密码错误")
setTimeout(foo,3000)
}
else{
alert("上传成功")
}
}
})
})
</script>
</html> 

后端代码:

def ajax_form(request):
if request.method == "GET":
return render(request,"formdate.html")
else:
username = request.POST.get("username")
password = request.POST.get("password") file_obj = request.FILES.get("avatar")
print("===================>",file_obj)
with open(file_obj.name, "wb") as f:
for line in file_obj:
f.write(line) response = {"flag":False}
if username=="username" and password == "password":
response["flag"] = True
import json
return HttpResponse(json.dumps(response)) 

简单的上传操作会让页面刷新,还有利用ajax无刷新技术上传的方式↓

Django普通文件上传的更多相关文章

  1. python Django之文件上传

    python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...

  2. day56:django:csrf_token&文件上传

    目录 1.csrf介绍 2.django实现csrf_token认证 3.django实现文件上传 csrf介绍 什么是csrf? csrf:跨站请求伪造.攻击者通过HTTP请求将数据传送到服务器,从 ...

  3. Django(十七)文件上传

    http://www.cnblogs.com/wupeiqi/articles/5703697.html - 文件上传        - 普通上传        - 自定义页面上传按钮        ...

  4. 框架----Django之文件上传

    一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls im ...

  5. Django的文件上传以及预览、存储

    思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...

  6. Django实现文件上传功能

    文件上传 关注公众号"轻松学编程"了解更多. 1.创建上传文件夹 在static文件夹下创建uploads用于存储接收上传的文件 在settings中配置,MEDIA_ROOT=o ...

  7. django 的文件上传

    template html(模板文件): <form enctype="multipart/form-data" method="POST" action ...

  8. Django处理文件上传File Uploads

    HttpRequest.FILES 表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data <form enctype="m ...

  9. Django之文件上传

    一.form表单上传文件 注意: 1.form上需要加enctype="multipart/form-data" 2.form提交的地址需要以/结尾 def form_file(r ...

随机推荐

  1. 设置两个div是总是不能重合,浏览器user agent stylesheet问题

    如图 两个div之间总是有一个空行,设置了margin为0还是没卵用,f12调试发现 多了一个user agent stylesheet样式,经百度是浏览器自带的样式 重新为div内的元素ul设置cs ...

  2. javaweb添加拦截器

    js请求后台代码添加拦截器: package com.ctzj.biz.isale.deploy.controller; import java.io.IOException; import java ...

  3. 【java】缓冲字符字节输入输出流:java.io.BufferedReader、java.io.BufferedWriter、java.io.BufferedInputStream、java.io.BufferedOutputStream

    BufferedReader最重要,因为有个方法public String readLine() package System输入输出; import java.io.BufferedReader; ...

  4. Inception使用详解

    一.Inception简介一款用于MySQL语句的审核的开源工具,不但具备自动化审核功能,同时还具备执行.生成对影响数据的回滚语句功能. 基本架构: 二.Inception安装 1.软件下载 下载链接 ...

  5. c#中treeview的使用方法(转 )

    本文主要介绍treeView控件中,添加,修改.删除节点的操作, 首先当窗体加载的时候,我们添加上图中所示的节点. 当点击“Delete the Selected”按钮时,被选中的节点将被删除. 当点 ...

  6. KVM 初探

    KVM 是业界最为流行的 Hypervisor,全称是 Kernel-based Virtual Machine.它是作为 Linux kernel 中的一个内核模块而存在,模块名为 kvm.ko,也 ...

  7. Eclipse Pydev添加MySQLdb模块,Windows下安装MySQL-python

    1.首先确保Windows下已经安装Python.Eclipse并且Eclipse已经集成Pydev能成功运行Python 2.下载MySQL-python 地址:http://www.codegoo ...

  8. C# 使用 CancellationTokenSource 终止线程

    http://blog.csdn.net/hezheqiang/article/details/51966511 我们在多线程中通常使用一个 C# 使用 CancellationTokenSource ...

  9. SQL基础学习_03_数据更新

    数据的插入 1. 基本INSERT语句     INSERT的基本语法为:     INSERT INTO  <表名> (列1, 列2, 列3,  -) VALUES (值1, 值2, 值 ...

  10. tophat安装

    1     依赖软件:bowtie,bowtie2,samtools,boost c++ library 2     建立索引文件:      bowtie包括bowtie,bowtie-build, ...