0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoで画像ファイルをアップロードできない場合のエラー解消法

Last updated at Posted at 2024-10-06

発生していた問題・エラー

jpgファイルがアップロードできない。

Django画像アップロードエラー.gif

エラーの原因・解決方法

  • ファイルを扱う場合、request.POSTだけでなく、request.FILESもフォームに渡す必要がある
  • ファイルアップロードには、フォームにenctype="multipart/form-data"を設定することで、ファイルデータが正しく送信される
views.py
def book_create(request):
    if request.method == 'POST':
        form = BookForm(request.POST)# request.FILESを追加して、ファイルも処理できるようにする
        if form.is_valid():
            form.save()
            return redirect('book_list')
    else:
        form = BookForm()
    return render(request, 'book/book_create.html', {'form': form})

def book_edit(request, id):
    book = get_object_or_404(Book, id=id)
    if request.method == 'POST':
        form = BookForm(request.POST, instance=book)# request.FILESを追加して、ファイルも処理できるようにする
        if form.is_valid():
            form.save()
            return redirect('book_list')
    else:
        form = BookForm(instance=book)
    return render(request, 'book/book_form.html', {'form': form})
book_form.html
<h2>{% if form.instance.id %}本のタイトルと著者を編集する{% else %}新しい本を追加する{% endif %}</h2>

<!-- ファイルアップロードがある場合には、必ずenctype="multipart/form-data"を指定 -->
<form method="POST">  <!-- ここにenctype="multipart/form-data"を追加 -->
    {% csrf_token %}
    <p>
        <label for="id_title">Title:</label>
        {{ form.title }}  
    </p>
    <p>
        <label for="id_author">Author:</label>
        {{ form.author }}  
    </p>
    <p>
        <label for="id_amazon_url">Amazon URL:</label>
        {{ form.amazon_url }} 
    </p>
    <p>
        <label for="id_image">Image:</label>
        {{ form.image }}  
    </p>

    <button type="submit">保存</button>  
</form>

無事、jpgファイルがアップロードできるようになりました。

Django画像アップロードエラー2.gif

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?