我正在开发一个允许用户上传图片的项目。稍后将显示上传的图像并将其传递给另一个表单。为此,我需要获取上传图像的图像网址。这是我的代码:
def inputImage(request):
if request.method == 'POST':
form = ImageDetailsForm(request.POST, request.FILES)
if form.is_valid():
form.save()
message = "The image was successfully uploaded!"
imageName = str(request.FILES['image'].name)
imageURL = settings.MEDIA_URL + "/" + imageName
return render(request,'success.html', {'message': message, 'image': imageURL})
代码正在运行,但是如果用户在存储上传文件中包含现有文件名,则会出现问题。为避免冲突,Django会自动重命名文件,但行
imageName = str(request.FILES['image'].name)
仅返回上传图像的原始文件名。我也尝试过使用
imageName = str(form.cleaned_data['image'].name)
但仍然没有变化。它返回“/ media // 1.png”而不是“/ media // 1_0rnKMaT.png”
关于如何在Django中获取当前上传的URL的任何想法?
编辑: 这是我的models.py:
class ImageDetails(models.Model):
image = models.ImageField(null=True)
和我的forms.py
class ImageDetailsForm(forms.ModelForm):
class Meta:
model = ImageDetails
fields= ('image')
widgets = {
'status': forms.HiddenInput(),
}
答案 0 :(得分:0)
您可以通过form.instance
访问已保存的模型实例,因此您应该能够使用form.instance.image_field_name.name
获取已保存文件的名称,其中image_field_name
是图像字段的名称你的模特。