質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

259閲覧

画像以外のものを送るとTemplateDoesNotExist at /accounts/upload_save/と出る

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/11/10 02:50

画像を送信するシステムで、画像以外のものを送ると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と書けば画像しか受け付けずその他の場合は送れないと思ったのですが。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2017/11/10 05:40

profile.html、photo.html、pythonファイルのディレクトリ構造を教えてください。
退会済みユーザー

退会済みユーザー

2017/11/10 06:41

PythonServer(親アプリ) / accounts(子アプリ) / templates / registration /  の中にprofile.htmlとphoto.htmlはあって、
退会済みユーザー

退会済みユーザー

2017/11/10 06:42

PythonServer / accounts /  の中にロジックを書いたpythonファイルがあります
Lhankor_Mhy

2017/11/10 10:00

profile.htmlとphoto.htmlが同じディレクトリにあるのに、'profile.html'と'registration/photo.html'とのようにパスを変えているのが原因ではありませんか?
退会済みユーザー

退会済みユーザー

2017/11/10 11:46

多分それは関係ないです。というのも、'profile.html'と'registration/photo.html'出ないとTemplateDoesNotExistとエラーが出てしまうからです
Lhankor_Mhy

2017/11/11 03:59

'registration/photo.html'でないとTemplateDoesNotExistとエラーが出てしまうでしょうけれど、'profile.html' の方はその現象と関係ないと思いますが。'registration/profile.html' が正しいのでは。
退会済みユーザー

退会済みユーザー

2017/11/11 04:26

ありがとうございます。'registration/profile.html'に直したら上記のエラーが消えました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問