[Django]ファイルアップロードを受付中にis_valid()がFalseしか返さない
解決したいこと
ここに解決したい内容を記載してください。
djangoでwebアプリを作成しており、ユーザーからファイルのアップロードを受け付けるシステムを作成したいです。その中でis_valid()
がFalse
しか返さない論理エラーに直面しています。
入力するファイルは動画(.mp4)ファイルで入力されたものはroot/modelフォルダに保存されるものとしています。
発生している問題・結果
GGG
False
[21/Jun/2024 16:12:12] "POST / HTTP/1.1" 200 2002
該当するソースコード
views.py
def file_upload(request):
print("GGG")
if request.method == 'POST':
print("FFF")
form = UploadFileForm(request.POST, request.FILES)
print(form.is_valid())
if form.is_valid():
print("AAA")
file_obj = request.FILES['file']
if file_obj:
print("BBB")
handle_uploaded_file(file_obj)
return render(request, 'file_upload/frontpage.html', {
'form': form, 'show_success_message': True
})
else:
return render(request, 'file_upload/frontpage.html', {
'form': form, 'error_message': 'ファイルを選択していません。'
})
else:
form = UploadFileForm()
return render(request, 'file_upload/frontpage.html', {'form': form})
forms.py
from django import forms
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
urls.py
from django.urls import path,include
from . import views
app_name = 'file_upload'
urlpatterns = [
path('', views.file_upload, name='file_upload'),
path('process/', views.processing, name='processing'),
path('feedback/', include('feedback.urls')),
]
frontpage.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ファイルアップロード</title>
<style>
body {
font-family: Arial, sans-serif;
}
.header {
text-align: left;
font-size: 2em;
margin: 20px;
}
.container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 80vh;
}
.file-title {
font-size: 1.5em;
margin-bottom: 20px;
}
.file-upload {
margin-bottom: 20px;
}
.file-upload input {
margin-bottom: 10px;
}
.process-btn {
margin-top: 20px;
}
.error-message {
color: red;
margin-top: 10px;
}
</style>
<script>
function showSuccessMessage() {
alert('ファイルが正常にアップロードされました!');
}
function showErrorMessage() {
alert('ファイルを選択していません。');
}
</script>
</head>
<body>
<div class="header">
preai
</div>
<div class="container">
<div class="file-title">
ファイルを選択してください
</div>
<form id="uploadForm" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="file-upload">
{{ form.file }}
<button type="submit">アップロード</button>
</div>
{% if error_message %}
<div class="error-message">{{ error_message }}</div>
{% endif %}
</form>
<div class="process-btn">
<form action="{% url 'file_upload:processing' %}" method="get">
<button type="submit">処理</button>
</form>
</div>
</div>
{% if show_success_message %}
<script>
showSuccessMessage();
</script>
{% endif %}
</body>
</html>
自分で試したこと
- formsの文字列の条件を変更
- アップロードするファイル形式の変更
- 公式ドキュメントの参照
参照したサイト
0