gpt4 book ai didi

django - 使用 Django ModelForm 上传个人资料图片

转载 作者:行者123 更新时间:2023-12-04 19:17:46 25 4
gpt4 key购买 nike

我环顾了相关问题,但似乎没有一个答案有效。我正在尝试为用户上传个人资料图片并让它替换(覆盖)当前图片。保存图像后,我想将文件名更改为用户 ID。在当前形式中,图像将上传,但不会替换现有图像(例如,它将被保存为 2_1.png)。

class PhotoForm(forms.ModelForm):
def save(self):
content_type = self.cleaned_data['photo'].content_type.split('/')[-1]
filename = '%d.%s' % (self.instance.user.id, content_type)

instance = super(PhotoForm, self).save(commit=False)
instance.photo = SimpleUploadedFile(filename, self.cleaned_data['photo'].read(), content_type)
instance.save()
return instance

class Meta:
model = UserProfile
fields = ('photo',)

def photo_form(request):
if request.method == 'POST':
form = PhotoForm(data=request.POST, file=request.FILES, instance=request.user.get_profile())
if form.is_valid():
form.save()
else:
form = PhotoForm()
return render(request, 'photo_form.html', {'form': form})

最佳答案

def photo_form(request):
if request.method == 'POST':
form = PhotoForm(data=request.POST, file=request.FILES, instance=request.user.get_profile())
if form.is_valid():
handle_uploaded_file(request.FILES['<name of the FileField in models.py>'])

def handle_uploaded_file(f):
dest = open('/path/to/file', 'wb') # write should overwrite the file
for chunk in f.chunks():
dest.write(chunk)
dest.close()

在这里查看: https://docs.djangoproject.com/en/dev/topics/http/file-uploads/
如果这不起作用,我想您可以使用 os.system 如果表单被接受来删除文件。这可能不是一个很好的解决方案,但它应该有效。

关于django - 使用 Django ModelForm 上传个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com