Получение сохранения CSV в папке документов

Я знаю, что этот вопрос, вероятно, возникал миллион раз, но я не могу заставить свой код работать.

Я хочу выгрузить csv в папку, чтобы я мог выполнять дальнейшие операции с ним.

Я думаю, что проблема может быть в моем HTML-коде, но не уверен, где именно. Папка, в которую я хочу сохранить его, это documents/, я не добавил его в settings.py, но я видел, что другие люди тоже не добавляли его туда.

Мой код выглядит следующим образом: Main urls.py


from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from mainsite import views as main

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', main.index, name= 'index'),
    path('contact/', include('contact.urls')),
    path('explanation/', include('modelexpl.urls')),
    path('uploads/', main.model_form_upload, name='model_form_upload')


]

App urls.py

from django.shortcuts import render
from django.http import HttpResponse
from django.urls import path
from mainsite import views
# Create your views here.

urlpatterns = [
path('', views.index, name='index')
]

модели приложения.

from django.db import models

# Create your models here.

class Document(models.Model):
    description = models.CharField(max_length=200, blank= True)
    document = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

Мнения приложения

from django.shortcuts import render
from django.http import HttpResponse
from mainsite.models import Document
from mainsite.forms import DocumentForm

# Create your views here.

def index (request):
    placeholder = {'test' : 'test'}
    documents = Document.objects.all()
    return render(request, 'mainsite/index.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 HttpResponseRedirect('/success/url/')
            print("uploaded")

    else:
        form = Upload()
        print("trying")

    return render(request, 'mainsite/index.html', {'form' : form})

HTML

{% block content %}

  <div class="form-group">
    <label for="exampleFormControlFile1">Make sure your csv doesn't exceed 250mb!</label>
    <br>


    <form action = "{% url 'index' %}" method="POST" enctype="multipart/form-data">
      {% csrf_token %}
      {{ form.as_p }}

    <input type="file" class="form-control-file" id="exampleFormControlFile1" method="post" enctype="multipart/form-data">
    <button type="submit">Upload</button>

  </div>
</form>
{% for obj in documents %}
  <p>File uploaded at: <a href="{{ obj.document.url }}">{{ obj.document }}</a></p>
        </div>
      </div>
    </div>
    {% endfor %}
    {% endblock %}

Благодарю за любую помощь, я потратил на это очень много времени и действительно потерялся!

Кроме того, я планирую использовать этот сохраненный csv для создания ML моделей, затем вернуть другой csv обратно после обработки, как вы думаете, это будет наиболее эффективный способ сделать это с точки зрения скорости и использования Django? (Я специалист по данным/статистик, это мой побочный хобби-проект)

В форме вашего HTML вы установили action на неправильное представление для обработки формы после отправки.

у вас есть:

<form action = "{% url 'index' %}" method="POST" enctype="multipart/form-data">

Измените его на:

<form action = "{% url 'model_form_upload' %}" method="POST" enctype="multipart/form-data">
Вернуться на верх