Я работаю над проектом, который позволит пользователю загружать изображение. Загруженное изображение позже отобразится и будет передано в другую форму. Для этого мне нужно получить URL-адрес изображения загруженного изображения. Вот мой код:Django переименовать загруженное изображение 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»
Любые идеи о том, как получить URL текущей загрузки в Django?
Edit: вот мой 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(),
}
Да, но возвращает ошибку, в которой говорится, что форма не имеет объекта «image», но на самом деле это одно из полей формы. – jonilyn2730