Django 画像アップロードでバリデーションがTrueにならない。
解決したいこと
画像アップロードでバリデーションがTrueにならない。
色々試して、正常に動作するパターンと動作しないパターンを探ってみましたが、全く理由がわかりません...
if request.method == "POST":
form = forms.ContactForm(request.POST, request.FILES)
params["form"] = form
file = request.FILES.get('image')
if file:
path = default_storage.save(f'{file.name}', ContentFile(file.read()))
request.session['file_path'] = path
if form.is_valid():
return render(request, "home/confirm.html", params)
上記コードだとファイルアップロード時に「画像をアップロードしてください。アップロードしたファイルは画像でないか、または壊れています。」とエラーメッセージが表示されform.is_valid()がFalseになってしまう。
if request.method == "POST":
form = forms.ContactForm(request.POST, request.FILES)
file = request.FILES.get('image')
if file:
path = default_storage.save(f'{file.name}', ContentFile(file.read()))
request.session['file_path'] = path
if form.is_valid():
params["form"] = form
return render(request, "home/confirm.html", params)
params["form"] = form の位置を変えたところ正常に動作
if request.method == "POST":
form = forms.ContactForm(request.POST, request.FILES)
params["form"] = form
print(form.errors)
file = request.FILES.get('image')
if file:
path = default_storage.save(f'{file.name}', ContentFile(file.read()))
request.session['file_path'] = path
if form.is_valid():
return render(request, "home/confirm.html", params)
また、params["form"] = formの下にprint(form.errors)やprint(form.is_valid())など追加すると正常に動作するが、print("WWW")みたいな文字列ではファイルをアップロードしてもform.is_valid()がFalseになる。
0 likes