Django学习笔记(六)Django上传文件
来源:互联网 发布:哥德尔和人工智能 编辑:程序博客网 时间:2024/06/03 15:27
这个应该是Django的最后一个学习模块了。再深入的就需要到项目里面去实践了
Django上传文件有两种方式,一种是传统的基于IO流的操作,一种是封装为基于对象的操作。
但是无论哪种操作,都需要先创建上传文件的目录,
一、基于IO流的操作
urls中的配置,基于学习笔记(五)中的表单的提交的blog/param/(?P<id>\d{2})
修改的post方法如下:
def post(req): if req.method == 'POST': form = UserForm(req.POST,req.FILES) if form.is_valid(): print form.cleaned_data print form.cleaned_data['name'] print form.cleaned_data['userImag'].name print form.cleaned_data['userImag'].size #way 1 s = form.cleaned_data['userImag'].read() fb = file('./djangotest/upload/'+form.cleaned_data['userImag'].name,'wb') fb.write(s) fb.close() return HttpResponse('OK') else : return HttpResponse('Failed') else : form = UserForm() return render_to_response('param.html',{'form':form})
对应的param.html如下:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>{{id}}</title></head><body>{{num}}<br/>{{url}}<br/>提交form需要注释掉settings文件中MIDDLEWARE_CLASSES的验证(token验证)<form action="/blog/post/" method="post" enctype="multipart/form-data"><span style="white-space:pre"></span>{{form.as_p}}<span style="white-space:pre"></span><button type="submit">提交</button></form></body></html>
二、基于对象方式存储:
首先,配置settings文件中的
MEDIA_ROOT = './djangotest/'目的是让之后的上传操作的路径都相对于项目本身的路径,而不必写死
增加新的models:
class Files(models.Model): name = models.CharField(max_length=300) f = models.FileField(upload_to='upload/') def __unicode__(self): return self.name同步数据库
修改post方法:
def post(req): if req.method == 'POST': form = UserForm(req.POST,req.FILES) if form.is_valid(): print form.cleaned_data print form.cleaned_data['name'] print form.cleaned_data['userImag'].name print form.cleaned_data['userImag'].size #way 1 s = form.cleaned_data['userImag'].read() fb = file('./djangotest/upload/'+form.cleaned_data['userImag'].name,'wb') fb.write(s) fb.close() #way2 f = Files(name=form.cleaned_data['userImag'].name,f=form.cleaned_data['userImag']) f.save() return HttpResponse('OK') else : return HttpResponse('Failed') else : form = UserForm() return render_to_response('param.html',{'form':form})
对应的param.html如下:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>{{id}}</title></head><body>{{num}}<br/>{{url}}<br/>提交form需要注释掉settings文件中MIDDLEWARE_CLASSES的验证(token验证)<form action="/blog/post/" method="post" enctype="multipart/form-data"><span style="white-space:pre"></span>{{form.as_p}}<span style="white-space:pre"></span><button type="submit">提交</button></form></body></html>
0 0
- Django学习笔记(六)Django上传文件
- Django学习笔记(六)
- Django 学习笔记(六)
- Django学习笔记(5) -- 上传文件
- Django框架学习笔记(28.文件上传详解)
- Django学习笔记(六)--models与mysql数据库接入
- Django学习笔记(五)Django传参
- Django学习笔记(三)--Django超链接
- Django框架学习笔记(5.获取多个数据以及文件上传)
- Django - 上传文件(初稿)
- django 文件上传
- django 文件上传
- Django的文件上传
- django上传文件
- django 文件上传
- django上传文件
- django 上传文件
- django上传文件
- Mysql 安装 错误 记录
- C#winform设置窗体自动缩放适应不同尺寸的电脑屏幕大小
- POJ 3009Curling 2.0(基础题)
- Java集合框架面试问题集锦
- HDU 2377 基础dijkstra,spfa算法
- Django学习笔记(六)Django上传文件
- 拓扑排序(AOV)---判断图中是否有环---《数据结构》严蔚敏
- OC语言特点
- 试探究一种查找素数算法
- TCP协议中的三次握手和四次挥手(图解)
- Java fast-fail机制
- leetcode Single Number & Single Number ||
- 【HDU】4908 BestCoder Sequence 预处理
- 架构经验系列文章索引