djangoで機械学習でデータ分析ができるwebアプリを作っています。
csvファイルをアップロードし、学習済みのモデルでデータ分析をしたいのですが、csvファイルの読み込みにアップロード先のurl(今回は、/media/csvファイル名)を指定してcsvファイルからデータフレームを読み込む所でつまずいています。
色々とコードを下に書きましたが、
views.pyのupload_dfにpd.read_csvでデータを入れる所でエラーが発生してしまいます。
プロジェクト名はjob_offer,アプリケーション名はjob_offer_appとしています。
job_offer/settings.py
(略) INSTALLED_APPS = [ (略) 'job_offer_app.apps.JobOfferAppConfig', ] MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
job_offer_app/templates/index.html
{% load static %} <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>トップページ</title> </head> <body> <h1>csvファイルをアップロードしてください。</h1> <form action="{% url 'home' %}" method="POST" class="post-form" enctype="multipart/form-data"> {% csrf_token %} <input type="file" accept =".csv" name="file"> <button type="submit" class="save btn btn-default">アップロード</button> </form> {% if uploaded_url %} <p>ファイルのアップロード場所は、<a href="{{ uploaded_url }}">{{ uploaded_url }}</a>です。</p> {% endif %} </body> </html>
job_offer/urls.py
from django.contrib import admin from django.conf import settings from django.conf.urls.static import static from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('job_offer_app.urls')), ] # only in development if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
job_offer_app/urls.py
from django.conf import settings from django.conf.urls.static import static from django.urls import path from . import views urlpatterns = [ path('', views.index, name="home"), ] # only in development if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
job_offer_app/views.py
from django.shortcuts import render import pandas as pd import pickle # Create your views here. from django.http import HttpResponse from django.core.files.storage import FileSystemStorage training_data_df = pd.read_csv("training_data.csv") with open("trained_model.pickle", mode="rb") as f: model = pickle.load(f) def index(request): if request.method == "GET": return render(request, 'index.html') elif request.method == "POST" and 'file' not in request.FILES: return render(request, 'index.html') else: file = request.FILES['file'] fileobject = FileSystemStorage() filedata = fileobject.save(file.name, file) upload_url = fileobject.url(filedata) #ここでエラーが発生 下のどちらで試してもエラーが起きます。 # upload_df = pd.read_csv("../media/" + filedata) # upload_df = pd.read_csv(upload_url) return render(request, 'index.html', {"uploaded_url": upload_url})
どなたかお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/20 14:51
2020/10/20 15:29
2020/10/21 03:14