前提
django-pandasでExcelもしくはcsvをアップロードされたら、一定の処理を行いダウンロードさせるシステムを作成しています。
ページを表示させる段階で、
django.template.exceptions.TemplateDoesNotExist: bootstrap4/widgets/radio_select_button_group.htmlというエラーメッセージが発生しました。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
発生している問題・エラーメッセージ
django.template.exceptions.TemplateDoesNotExist:bootstrap4/widgets/radio_select_button_group.html
該当のソースコード
python
from bootstrap4.widgets import RadioSelectButtonGroup from django import forms class FileUploadForm(forms.Form): #ファイルの選択フォーム file = forms.FileField(label='ファイル') #ファイルの選択形式 FileType = forms.ChoiceField( help_text="Select file type.", #選択可能なファイル形式の設定(今回はcsvかxlsx) choices=(('csv', 'csv'), ('xlsx', 'xlsx')), #デフォルトをcsv initial='csv', #入力を必須にする required=True, #HTML上での見た目のコントロール widget=RadioSelectButtonGroup, )
python
from django.shortcuts import render # Create your views here.from .forms import FileUploadForm import pandas as pd from django.urls import reverse_lazy from django.http import HttpResponse from django.views.generic.edit import FormView class FileUploadView(FormView): #ファイル入出力画面 template_name = 'app/fileupload.html' #入力フォーム form_class = FileUploadForm #入出力後、元の画面になる success_url = reverse_lazy('file-upload') #フォーム入力後の処理 def form_valib(self,form): #filetypeにファイルの形式を格納、fileにファイルを格納 filetype = form.cleaned_data['FileType'] file = io.TextIOWrapper(form.cleaned_data['file']) #データフレームに変換(csvとxlsxで処理が違うためif) if filetype == 'csv': df = pd.read_csv(file, dtype=str) elif filetype == 'xlsx': df = pd.read_excel(file,dtype=str,index_col=0) #処理内容を記載 #ここまでが処理内容 #ファイル名の設定(日本語では不可のため取り敢えず……) f_name = 'your_favourite_filename' if filetype == 'csv': response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename ="' + f_name + '.csv"' df.to_csv(path_or_buf=response, sep=",", index=False, encoding="cp932") elif filetype == 'xlsx': response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment; filename ="' + f_name + '.xlsx"' df.to_excel(excel_writer=response, sheet_name="result", index=False) #htmlに結果を返す return response
html
{% extends 'base.html' %} {% block main %} <div class = "row"> <div class = "col-sm-6 offset-sm-3"> <h4>アップロードするファイルを選択</h4> <form action=""method="post"enctype="multipart/form-data"> {% csrf_token %} <div class = "form-group"> {{ form.file }} {{ form.FileType }} </div> <button type = "submit" class = "btn btn-primary">実行</button> </form> </div></div>{% endblock %}
html
{% comment %} {% load static %} <!DOCTYPE html><html lang="ja"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sample App</title> <link href="{% static 'assets/css/bootstrap.css' %}" rel="stylesheet" /></head><body>{% block main %} <p>サンプル</p>{% endblock %} </body> </html> {% endcomment %} {% load static %} <!doctype html><html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <title>Sample App</title> </head> <body> {% block main %} <!-- ここに本文を記述します --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script> {% endblock %} </body></html>
試したこと
bootstrapの問題であると仮定して、エラーコードのRadioSelectButtonGroupの調査
補足情報
こちらの記事を参考に作成しております。
https://note.com/nssystems/n/n7cb1339f2a2c
https://note.com/nssystems/n/na03844a000bc
0 コメント