画像を送信するシステムで、画像以外のものを送るとTemplateDoesNotExist at /accounts/upload_save/と出ます。
@login_required def profile(request): return render(request, 'profile.html') @login_required @csrf_exempt def upload_save(request): form = UserImageForm(request.POST, request.FILES) if request.method == "POST" and form.is_valid(): data = form.save(commit=False) data.user = request.user data.save() return render(request, 'registration/photo.html') else: form = UserImageForm() return render(request, 'profile.html', {'form': form})
とコードを書きました。
profileメソッドで画像を送信する部分のhtmlが呼ばれ、upload_saveメソッドで画像が保存される仕組みになっています。profileメソッドで呼ばれるのはprofile.htmlで、
<form action="/accounts/upload_save/" method="POST" enctype="multipart/form-data" role="form"> {% csrf_token %} <div class="input-group"> <label class="input-group-btn"> <span class="file_select btn-lg"> ファイルを選択する <input id="file1" type="file" name="image" style="display: none"> </span> </label> <input type="text" class="form-control" readonly=""> </div> <div class="form-group"> <input type="hidden" value="{{ p_id }}" name="p_id" class="form-control"> </div> <div class="form-group"> <input id="send" type="submit" value="送信" class="form-control" style="width:30%;height:50px;font-size:25px;"> </div> </form>
のように書きました。pdf形式のものやmp3形式のものをファイルとして送ると上記のエラーで落ちてしまいます。pdf形式のものやmp3形式のものを送った時サーバーは落ちなくてjavascriptのalertで「画像を送ってください」と表示させたいのですが、どのように直せば良いのでしょうか?
form = UserImageForm(request.POST, request.FILES)
の request.FILESと書けば画像しか受け付けずその他の場合は送れないと思ったのですが。。。
あなたの回答
tips
プレビュー