Django之文件上传
一、form表单上传文件
注意:
1、form上需要加enctype="multipart/form-data"
2、form提交的地址需要以/结尾
def form_file(request):
if request.method=="POST":
file = request.FILES.get("file")
with open(file.name,"wb") as f:
for chunk in file.chunks():
f.write(chunk)
return render(request,"form_file.html",locals())
<form method="post" action="/form_file/" enctype="multipart/form-data">
{% csrf_token %}
<p><input type="file" name="file"></p>
<p><input type="submit"></p>
</form>
上传头像,用默认头像替换选择文件按钮:
<p>
{{ obj.img.label }}
<label for="img"><img src="/static/img/default.png"></label>
<input id="img" type="file" name="img">
</p>
二、ajax上传文件
def register(request):
if request.method == "POST":
form_obj = RegisterForm(request.POST)
ret = {"status": 0, "msg": ""}
if form_obj.is_valid():
form_obj.cleaned_data.pop("re_pwd")
avatar = request.FILES.get("avatar")
models.UserInfo.objects.create(**form_obj.cleaned_data,avatar=avatar)
return JsonResponse(ret)
else:
ret["status"] = 1
ret["msg"] = form_obj.errors
return JsonResponse(ret)
form_obj = RegisterForm()
return render(request,"register.html",locals())
//ajax上传注册信息并获取错误信息
$("#register-btn").click(function(){
//ajax上传文件,data部分必须用对象
var formData = new FormData();
formData.append("username",$("#id_username").val());
formData.append("password",$("#id_password").val());
formData.append("re_pwd",$("#id_re_pwd").val());
formData.append("email",$("#id_email").val());
formData.append("avatar",$("#id_avatar")[0].files[0]);
formData.append("csrfmiddlewaretoken",$("[name='csrfmiddlewaretoken']").val());
$.ajax({
url:"/register/",
type:"post",
//ajax上传文件需要加两个参数
processData:false,
contentType:false,
data:formData,
success:function(data){
if(data.status){
//如果有错误,则返回错误信息
$.each(data.msg,function(k,v){
//k是键,v是值,但是v是列表,错误信息可能有多个
$("#id_"+k).next("span").text(v[0]).parent().parent().addClass("has-error");
})
}else{
//如果没有错误,则跳转到指定页面
location.href = "/login/"
}
}
})
})
//输入框取得焦点时,清楚错误信息
$("form input").focus(function(){
$(this).next("span").text("").parent().parent().removeClass("has-error");
});
三、iframe上传文件
Django之文件上传的更多相关文章
- python Django之文件上传
python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...
- day56:django:csrf_token&文件上传
目录 1.csrf介绍 2.django实现csrf_token认证 3.django实现文件上传 csrf介绍 什么是csrf? csrf:跨站请求伪造.攻击者通过HTTP请求将数据传送到服务器,从 ...
- Django(十七)文件上传
http://www.cnblogs.com/wupeiqi/articles/5703697.html - 文件上传 - 普通上传 - 自定义页面上传按钮 ...
- 框架----Django之文件上传
一.文件上传 1. 浏览器访问 http://127.0.0.1:8000/f1/ http://127.0.0.1:8000/f2/ 2. urls from django.conf.urls im ...
- Django的文件上传以及预览、存储
思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...
- Django实现文件上传功能
文件上传 关注公众号"轻松学编程"了解更多. 1.创建上传文件夹 在static文件夹下创建uploads用于存储接收上传的文件 在settings中配置,MEDIA_ROOT=o ...
- Django普通文件上传
前端代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- django 的文件上传
template html(模板文件): <form enctype="multipart/form-data" method="POST" action ...
- Django处理文件上传File Uploads
HttpRequest.FILES 表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data <form enctype="m ...
随机推荐
- Python脱产8期 Day13 2019/4/28
一 函数的嵌套定义 1在一个函数的内部定义另一个函数. 2.为什么有函数的嵌套定义: # 1)函数fn2想直接使用fn1函数的局部变量,可以讲fn2直接定义到fn1的内部,这样fn2就可以直接访问fn ...
- Java高级篇(四)——反射
之前写到了设计模式的代理模式,因为下一篇动态代理等内容需要用到反射的知识,所以在之前Java篇的基础上再写一篇有关反射的内容,还是以实际的程序为主,了解反射是做什么的.应该怎么用. 一.什么是反射 反 ...
- 《Linux/UNIX系统编程手册》第63章 IO多路复用、信号驱动IO以及epoll
关键词:fasync_helper.kill_async.sigsuspend.sigaction.fcntl.F_SETOWN_EX.F_SETSIG.select().poll().poll_wa ...
- Firefox 中出现的 “Network Protocol Error”怎么办
Mozilla Firefox 多年来一直是我的默认 Web 浏览器,我每天用它来进行日常网络活动,例如访问邮件,浏览喜欢的网站等.今天,我在使用 Firefox 时遇到了一个奇怪的错误.我试图在 R ...
- Shell命令-系统信息及显示之dmesg、uptime
文件及内容处理 - dmesg.uptime 1. dmesg:显示开机信息 dmesg命令的功能说明 dmesg 命令用于显示开机信息.kernel 会将开机信息存储在 ring buffer 中. ...
- Java垃圾收集器概述
垃圾收集器的操作 查找未使用的对象,释放内存,并压缩堆,避免内存碎片 一个java程序,有执行应用程序逻辑的线程和执行GC的线程组.当GC跟踪对象引用,或在内存中移动对象,它必须确保应用程序线程没有使 ...
- ML.NET is an open source and cross-platform machine learning framework
https://www.microsoft.com/net/learn/apps/machine-learning-and-ai/ml-dotnet Machine Learning made for ...
- Oracle篇 之 查询行及概念
Oracle: s_emp s_dept s_region 行:Row(tuple) 列:Column(attribute) conn:改变用户 Drop:删除用户 drop user bri ...
- LIS的O(nlogn)算法
出自蓝书<算法竞赛入门经典训练指南> 求最长上升子序列是很常见的可以用动态规划解决的问题…… 很容易根据最优子结构之类的东西得出 $\text{dp}[i]$为以第i个数结尾的最长上升子序 ...
- Input标签使用整理
0 写在前面 对于程序而言I/O是一个程序的重要组成部分.程序的输入.输出接口,指定了程序与用户之间的交互方式.对于前端开发而言,input标签也有着其重要地位,它为用户向服务端提交数据提供了可能. ...