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 ...
随机推荐
- Vue-移动端项目真机测试
一.查看ip地址 在控制台输入 ifconfig 查看ip地址 二.修改webpack-dev-server配置项 webpack-dev-server 默认不支持ip地址访问,需要修改配置项 三.测 ...
- Python如何将整数转化成二进制字符串
Python 如何将整数转化成二进制字符串 1.你可以自己写函数采用 %2 的方式来算. >>> binary = lambda n: '' if n==0 else binary( ...
- 利用Python中SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信 版权声明 本文转自:http://blog.csdn.net/cnmilan/article/details/9664823 ...
- golang介绍
一.golang介绍 golang是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言. 二.语言特性 1..自动垃圾回收 2.支持函数多返回值 3.并发强 三.gol ...
- ASUS RT-AC68U 刷梅林固件及安装***插件记录(详细)
本文借鉴网络并亲自刷机过程记录(网上很多教程都不太详细) 版本:华硕ASUS RT- AC68U Wireless-AC1900 路由器的连接方式略,有说明书 连好后打开浏览器输入:http:/ ...
- QT出现应用程序无法正常启动0xc000007b的错误
最近做了一个成绩管理系统,打包好后,运行他的exe可执行文件时,出现了如下图的错误提示: 在网上查阅了很多资料,其中有篇文章给了我很大的启示和帮助,文章地址http://www.cnblogs.com ...
- shell 基础(一)
废话少说 往下看 1. 查看 Shell Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中./e ...
- 【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
[GDOI2016模拟3.16]幂 \(X\in[1,A],Y\in[1,B]\),问:\(x^y\)的不用取值个数. \(A,B\)都是\(10^9\)级别. 然后我们开搞. 首先,假设一个合法的\ ...
- Luogu P3731 [HAOI2017]新型城市化
题目显然可以转化为求每一条边对二分图最大独立集的贡献,二分图最大独立集\(=\)点数\(-\)最大匹配数,我们就有了\(50pts\)做法. 正解的做法是在原图上跑\(Tarjan\),最开始我想复杂 ...
- Linux设备树(六 memory&chosen节点)
六 memory&chosen节点 根节点那一节我们说过,最简单的设备树也必须包含cpus节点和memory节点.memory节点用来描述硬件内存布局的.如果有多块内存,既可以通过多个memo ...