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 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短