Что не так с моей загрузкой CSV в Django?
Я создал, как мне кажется, довольно стандартный код, но файл, похоже, не загружается! Моя папка set up пуста, плюс файл не отображается после нажатия кнопки submit!
При нажатии кнопки submit я вижу только "GET /?csrfmiddlewaretoken=9JefYLkycrupVof72b1oujZ2DSi0o5BlfujkW27PhVDWBcoZyzc74aZ9yckOkJUz&myfile=file+.csv HTTP/1.1" 200 2844
и аналогичные сообщения
Мой код: Основная папка проекта:
В файл setting.py добавлено
MEDIA_URL = '/documents/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'documents')
urlpatterns = [
]
if DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
url.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.model_form_upload, name= 'index'),
path('contact/', include('contact.urls')),
path('explanation/', include('modelexpl.urls')),
path('uploads/', main.model_form_upload, name='model_form_upload')
]
Затем в папке моего проекта:
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')
]
models.py
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)
views.py: изначально я добавил следующую функцию:
from django.shortcuts import render
from django.http import HttpResponse
from mainsite.models import Document
from mainsite.forms import DocumentForm
from django.core.files.storage import FileSystemStorage
# Create your views here.
def index (request):
placeholder = {'test' : 'test'}
documents = Document.objects.all()
return render(request, 'mainsite/csv.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 = DocumentForm()
print("trying")
return render(request, 'mainsite/csv.html', {'form' : form})
def model_form_upload(request):
if request.method == 'POST' and request.FILES['myfile']:
myfile = request.FILES['myfile']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)
model_form_upload = fs.url(filename)
return render(request, 'mainsite/csv.html', {
'model_form_upload': model_form_upload
})
return render(request, 'mainsite/csv.html')
но ни то, ни другое не работает.
Я думаю, может это мой HTML файл?
{% extends 'mainsite/index.html' %}
{% load static %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile">
<button type="submit">Upload</button>
</form>
{% if model_form_upload %}
<p>File uploaded at: <a href="{{ model_form_upload }}">{{ model_form_upload }}</a></p>
{% endif %}
{% endblock %}
Благодарю за помощь, я потратил целую вечность, пытаясь отладить это!!!