私はユーザーが画像をアップロードできるプロジェクトに取り組んでいます。アップロードされた画像は後で表示され、別のフォームに渡されます。これを行うには、アップロードした画像の画像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を取得する方法上の任意のアイデアをのを返しますか?
編集:ここ は私の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(),
}
はい、フォームに 'イメージ'オブジェクトがありませんが、実際にフォームフィールドの1つだったというエラーが返されます。 – jonilyn2730