Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

577
Vistas
django upload file, process pandas and download as csv

I built an app which allows the user to upload a file. On the other hand, I have some python script which takes a text file, convert it to CSV and do pandas. This script works perfectly when running in the terminal. Now I want to apply that python script to the file upload in Django and show that file in httpResponse and make available to download it.

python script

import csv
import pandas as pd

df = pd.read_csv('raw_df.txt', delimiter = '\t' , usecols=['Sample','Cohort','Metabolite Name','Intensity'])
df = df[df['Cohort'].str.contains("std")]
df = df.groupby(['Cohort', 'Metabolite Name'])['Intensity'].sum().reset_index()
df = df[['Cohort','Intensity']]
c = 'Cohort'
s = df.set_index([c, df.groupby(c).cumcount() + 2]).Intensity
df =    s.unstack().add_prefix('Intensity').reset_index()
df.to_csv()
print df;

views.py

    from django.shortcuts import render, redirect
from django.conf import settings
from django.core.files.storage import FileSystemStorage

from uploads.core.models import Document
from uploads.core.forms import DocumentForm


def home(request):
    documents = Document.objects.all()
    return render(request, 'core/home.html', { 'documents': documents })

def model_form_upload(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('home')
    else:
        form = DocumentForm()
    return render(request, 'core/model_form_upload.html', {
        'form': form
    })

Models.py

class Document(models.Model):
document = models.FileField(upload_to='documents/')

template-upload page

   {% extends 'base.html' %}

{% block content %}
  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Upload</button>
  </form>

  <p><a href="{% url 'home' %}">Return to home</a></p>
{% endblock %}
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

  1. Wrap your file processing in a method:

    import csv
    import pandas as pd
    
    def process_file(file_handle):
        df = pd.read_csv(file_handle, delimiter = '\t' , usecols['Sample','Cohort','Metabolite Name','Intensity'])
        df = df[df['Cohort'].str.contains("std")]
        df = df.groupby(['Cohort', 'Metabolite Name'])['Intensity'].sum().reset_index()
        df = df[['Cohort','Intensity']]
        c = 'Cohort'
        s = df.set_index([c, df.groupby(c).cumcount() + 2]).Intensity
        df =    s.unstack().add_prefix('Intensity').reset_index()
        return df.to_csv()
    
  2. in your view:

    ... 
    if form.is_valid():
    document = form.save()
    # call to the new method
    csv = process_file(document.document)
    response = HttpResponse(csv, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=result.csv'
    return response
    ...
    
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda