2、定义上传表单



文件数据存储在request.FILES属性中

文件上传必须使用POST请求方式


{%csrf_token%}


3、手动存储文件

存储到关联用户的表字段中

defsavefIcon(request):
ifrequest.method=='POST'
f=request.FILES['icon']
filePath=os.path.join(settings.MEDIA_ROOT,f.name)
withopen(filePath,'wb')asfp:
forpartinf.chunks():
fp.write(part)

4、django内置存储

自定义图片上传路径和上传文件名

图片上传中,如果不对上传的文件名做处理,很容易引起文件名重复,这会覆盖之前上传的图片,django提供了自定义上传文件名的方法。

defgenerate_filename(self,instance,filename):
"""
Apply(ifcallable)orprepend(ifastring)upload_totothefilename,
thendelegatefurtherprocessingofthenametothestoragebackend.
Untilthestoragelayer,allfilepathsareexpectedtobeUnixstyle
(withforwardslashes).
"""
ifcallable(self.upload_to):
filename=self.upload_to(instance,filename)
else:
dirname=datetime.datetime.now().strftime(self.upload_to)
filename=posixpath.join(dirname,filename)
returnself.storage.generate_filename(filename)

上面的代码是django中对ImageField上传时,生成文件名的处理方式。如果upload_to的参数是可调用的,则直接调用来生成文件名(包括静态文件夹后的文件路径)。要自定义上传文件名就从这里着手。

importuuid
fromdjango.dbimportmodels
defimage_upload_to(instance,filename):
return'original_image/{uuid}/{filename}'.format(uuid=uuid.uuid4().hex,filename=filename)
classTestImageUpload(models.Model):
image=models.ImageField(upload_to=image_upload_to)

按照上面的方式,就可以按照自己的意愿随意的处理文件名了(函数的参数个数是固定的)。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

热门推荐

1 毛坯房验收经验和常识 看了之后再验房心里有底
2 二手房收房如何交接 二手房收房注意问题
3 专业验收毛坯房的价格 商品房验收合格的标准
4 精装房怎么验收 精装房请验房师有用吗
5 一般要到哪里找验房师 验房师有哪些作用呢
6 请人验房一般是多少钱 验房师费用是多少
7 怎样测量房子面积 建筑面积和使用面积怎么算
8 收房需要注意什么 仔细检查不松懈
9 收房时三书一证一表是什么 主要作用介绍
10 交房时交房税费有哪些 本文为你一一讲解
11 验房都需要验什么 要做哪些准备呢
12 毛坯房验房师有必要请吗 毛坯房装修完如何验收
13 地下室防水工程质量验收规范详解
14 水性涂料、油性涂料区别介绍
15 零基础布艺DIY工坊 教你做超萌猫头鹰钥匙包
16 三棵树漆怎么样?三棵树漆官方网站
17 家庭“装修套餐”中猫腻你知道吗?
18 小空间大浴望 卫浴间装修巧支招