Получение сохранения 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">