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 生日广州男生祝福语简短