【问题标题】:Django get renamed uploaded image urlDjango 重命名上传的图片 url
【发布时间】: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


【解决方案1】:

您可以通过form.instance访问保存的模型实例,因此您应该能够使用form.instance.image_field_name.name获取保存文件的名称,其中image_field_name是模型中图像字段的名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-10
    • 2020-12-13
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2014-03-20
    相关资源
    最近更新 更多