テンプレートファイルの設定こんにちは。この記事では、Djangoで複数フォームを1テンプレート内に表示する方法について試行錯誤した際の対応をまとめました。今回説明する以下のデモでは、学習用データのアップロードとテスト用データのアップロードを異なるタブ上(同じテンプレートファイル上)で実行したいようなケースを想定して作成しています。今回は、学習用データファイル(UploadTrainData)とテスト用ファイル(UploadTestData)のファイルアップロード用のモデルクラスを以下の通り定義します。「upload_to='train_data/」、テスト用データは「upload_to='test_data/」としてアップロード先のフォルダを分けています。あわせて、メディアファイルの設定としてsettings.pyに以下の設定を行っておきます。'/media/'アップロード先のフォルダも以下の通り作成しておきます。<プロジェクト>medial\train_data<プロジェクト>medial\test_dataフォームの定義フォームについても、学習用データとテスト用データのアップロードフォームをそれぞれ定義しておきます。今回はModelFormを使って先ほど定義したモデルの定義を使っています。続いてビューの定義です。今回はTemplateViewを承継してUploadViewというクラスを定義しています。"学習データのアップロードが完了しました。"テストデータのアップロードが完了しました。"学習データのアップロードが完了しました。"テストデータのアップロードが完了しました。objまず、学習用データとテスト用データのアップロードフォームを別々に定義します。'app1/main.html'postメソッドを新たに定義して、テンプレート側からのリクエストオブジェクトをそれぞれtrain_form、test_formとして受け取ります。get_context_dataメソッドをオーバーライドしてtrain_formとtest_formをテンプレートに渡せるようにします。self.get_context_data(train_form=train_form,test_form=test_form)続いて、postメソッドの後半部分です。"学習データのアップロードが完了しました。"テストデータのアップロードが完了しました。"学習データのアップロードが完了しました。"テストデータのアップロードが完了しました。context)train_formとtest_formに対してis_valid()メソッドを実行して、バリデーションチェックOKの場合にform_saveメソッドをCALLしてファイルを保存するようにします。CALLするform_saveメソッドは以下の通りで、formのsaveメソッドを実行してフォーム(ファイル)を保存してあげます。objテンプレートファイルの設定テンプレートはbase.htmlとmain.htmlの2つを作成します。共通テンプレートbase.htmlです。src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script></body></html>bootstrapとJQueryを利用するためにCDNを利用している以外は特段ないです。最後にmain.htmlです。class="card-text">学習用データをアップロードしてください。class="card-text">テスト用データをアップロードしてください。class="card-text">テスト用データを使って学習を実行します。class="card-text">学習用データをアップロードしてください。class="card-text">テスト用データをアップロードしてください。class="card-text">テスト用データを使って学習を実行します。%}タブの切り替え実装については省略しますが、以下の記事を参考にしました。Qiitahttps://qiita.com/tonkotsuboy_com/items/15a914f073c8f9bb1344(2018/01/20追記)(https://blog.getbootstrap.com/2018/01/18/bootstrap-4/)に合わせて記事を更新しました。Twitter社製の人気のUIフレームワーク...今回は、「学習データロード」、「テストデータロード」、「学習」という3つのタブを定義しています。各タブ内の設定で、以下の通りそれぞれフォームを指定することでタブ毎に異なったフォームを表示させます。{{test_form.testFile}}以下は、ファイルアップロード完了時のメッセージを表示させるために設定しています。%}以上で、デモ動画のような画面が完成します。FacebookTwitterGoogle+はてブPocketFeedlyこの記事を書いた人siny現在の仕事は社内SEのお仕事です。趣味でDjango,Python,機械学習、ディープラーニングなどをやってます。【実際に購入した商品を紹介】pythonのfilter関数を使って複数条件に一致する文字列を除外する方法おすすめの記事PyTorchpytorchテキスト前処理(torchtext)【入門者向け】こんにちは。この記事ではPytorchで自薦言語処理を行う場合にとても便利なtorchtextの使い方について学習を兼ねて情...PowerShellPowershellでサーバ情報を自動収集してみようこんにちは。この記事では、Powershellを使った情報収集の活用方法について説明していきます。Powershellはま...DeapLearningkerasでSeq2Seqモデル実装を数式なしで解説【入門者向け】こんにちは。Volumeコンテナの利用方法まとめ【入門者向け】こんにちは。Volumeの使い方についてまとめました。Data...Django爆速で作れるDjangoユーザ認証機能【django-allauth】こんにちは。最近、改めてDjango認証回りの勉強をしているのですが、Django標準である程度認証機能が付属しているとはい...DeapLearning【ディープラーニング入門】4つの例で学ぶスカラ、ベクトル、テンソルこんにちは。先日、G検定に合格したのですが、改めて基礎知識について復習をしていてスカラー、ベクトル、テンソルの考え方がややこ...Python不動産データ分析事例【pythonスクレイピング編】こんにちは。