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 生日开业蛋糕祝福语简短