初めての投稿になります。 当方、Django初心者のため基本的な質問でしたら申し訳ないのですが、以下のエラー処理をどのように実装したらよいか 調べてもいまいちうまく実現できないため、ご教授よろしくお願いいたします。
【実現したいこと】 以下の処理で、CSVファイルを指定してデータ登録する処理(①~③)は問題なく実装できました。 ①HTMLページ上から「ファイルを選択」ボタンを押して、CSVファイル選択する ②「データ登録」ボタンを押す ③CSVのデータを取り込んでデータベースにデータを登録。 ただし、①でファイルを選択しない状態で、②の「データ登録」ボタンを押すと、以下のようなエラーが 発生するため、ファイルを選択しない状態で「データ登録」ボタンを押した場合は、「ファイルを選択してください」 といったエラーポップアップメッセージを表示したい。(難しいなら単純なエラー文字列を表示するだけでもいい) -------------------------------------------------------------------------------------------------------------- Request Method: POST Request URL: http://127.0.0.1:8000/server/csv_import/ Django Version: 2.0.1 Exception Type: MultiValueDictKeyError Exception Value: 'csv' -------------------------------------------------------------------------------------------------------------- 以下、①~③の処理に関するコードの概要です。 ========================================= HTMLのCVSファイル選択&データ登録のソース部分 ========================================= ※urlで指定している「csv import」はviews.py内で定義したCSVデータ登録用の関数名 ----------------------------------------------------------------------------------------------------------------------------- <form action='{% url "csv_import" %}' method='POST' enctype="multipart/form-data"> </div> <div class="alert alert-info alert-dismissible"> <h3>一括データ登録</h3> <div class="btn-group"> <input type='file' name='csv'> </div> <div class="btn-group"> <input type="submit" class="btn btn-danger" value="データ登録"> </div> {% csrf_token %} </form> </div> ----------------------------------------------------------------------------------------------------------------------------- ========================================= csv import関数のソース ServerInfoはモデル名です。(environment_id ,server_name, os_version,cpu,memoryの4つの要素) ========================================= def csv_import(request): form_data = TextIOWrapper( request.FILES['csv'].file, encoding='sjis') if form_data: csv_file = csv.reader(form_data) for line in csv_file: serverinfo, created = ServerInfo.objects.get_or_create( environment_id = line[0], server_name = line[1], os_version = line[2], cpu = line[3], memory = line[4], ) serverinfo.save() return redirect('index') ------------------------------------------------------------------------------------ おそらく、views.py内のcsv_import関数内でtry exceptでエラー処理をするかなにかをすればよいのかなというあたりは ついているのですが、いろいろやってもうまくいかず悩んでいる状況です。 以上、よろしくお願いいたします。 -- -- ----------------- http://djangoproject.jp/ ----------------- You received this message because you are subscribed to the Google Groups "django-ja" group. To post to this group, send email to django-ja@googlegroups.com To unsubscribe from this group, send email to django-ja-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-ja --- このメールは Google グループのグループ「django-ja」の登録者に送られています。 このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com にメールを送信してください。 その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。