【发布时间】:2017-01-21 21:35:11
【问题描述】:
我正在开发一个允许用户上传图片的项目。上传的图像稍后将显示并传递给另一个表单。为此,我需要获取上传图片的图片 url。这是我的代码:
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(),
}
【问题讨论】:
-
是的,但返回一个错误,指出表单没有“图像”对象,但它实际上是表单字段之一。
标签: django url file-upload django-forms