python - Passing file to function to parse -


i have upload form takes file , sends function parse. csv file , im using datafield type store it.

views.py

def upload(request):     # handle file upload     if request.method == 'post':         form = uploadform(request.post, request.files)         if form.is_valid():             newdoc = csv(file=request.files['csvfile'])             newdoc.save()              # send file parser             import fanduel.load_data             fanduel.load_data.parse(newdoc.file, request.user)              # redirect document list after post             return httpresponseredirect(reverse('app.views.upload'))     else:         form = uploadform()  # empty, unbound form 

load_data.py

def parse(file, username):     import csv     datareader = csv.reader(open(file), delimiter=',', quotechar='"') 

forms.py

# in forms.py... django import forms  class uploadform(forms.form):     csvfile = forms.filefield(         label='select csv file',     ) 

models.py

class csv(models.model):     file = models.filefield(upload_to='csv/') 

traceback:

environment:   request method: post request url: http://127.0.0.1:8000/app/  django version: 1.7.6 python version: 3.4.2 installed applications: ('django.contrib.admin',  'django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.messages',  'django.contrib.staticfiles',  'import_export',  'app') installed middleware: ('django.contrib.sessions.middleware.sessionmiddleware',  'django.middleware.common.commonmiddleware',  'django.middleware.csrf.csrfviewmiddleware',  'django.contrib.auth.middleware.authenticationmiddleware',  'django.contrib.auth.middleware.sessionauthenticationmiddleware',  'django.contrib.messages.middleware.messagemiddleware',  'django.middleware.clickjacking.xframeoptionsmiddleware')   traceback: file "c:\users\wilson\appdata\roaming\python\python34\site-packages\django\core\handlers\base.py" in get_response   111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs) file "c:\users\wilson\pycharmprojects\bankroll2\app\views.py" in upload   20.             app.load_data.parse(newdoc.file, request.user) file "c:\users\wilson\pycharmprojects\bankroll2\app\load_data.py" in parse   13.     datareader = csv.reader(open(file), delimiter=',', quotechar='"')  exception type: typeerror @ /app/ exception value: invalid file: <fieldfile: csv/app_entry_history_20150316_w62rukt.csv> 

i'm not sure how pass in correct file type. if enter filepath manually load_data.py works fine, it's way it's passed in.

i think problem trying open wrong filename. when file uploaded webserver, either stored in memory, or written temporary location - django (https://docs.djangoproject.com/en/1.7/topics/http/file-uploads/#where-uploaded-data-is-stored).

so value in request.files['csv'] location of temporary file. want file gets stored in forms. need paste forms , models, guessing following might work, instead of

newdoc = csv(file=request.files['csvfile']) 

you need

newdoc = csv(file=form.cleaned_data['csvfile']) 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -