HinataYasukawa
@HinataYasukawa

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

[Django]ファイルアップロードを受付中にis_valid()がFalseしか返さない

Q&A

Closed

解決したいこと

ここに解決したい内容を記載してください。

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の文字列の条件を変更
  • アップロードするファイル形式の変更
  • 公式ドキュメントの参照

参照したサイト

[Django]フォームAPI
[Qiita]djangoでファイルをアップロード

0

No Answers yet.

Your answer might help someone💌