Импорт csv-файла с помощью django - форма не появляется

Я пытаюсь создать проект и мне нужно импортировать csv файл (Import csv file using django - Exception Type: DatabaseError)

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

csvs/urls.py

from django.urls import path
from .views import upload_file_view
app_name='csvs'

urlpatterns =[
    path('import/', upload_file_view, name='upload-view') 
]

csvs/views.py

from django.shortcuts import render
from .forms import CsvModelForm
from .models import Csv
import csv
from django.contrib.auth.models import User
from sales.models import Sales

def upload_file_view(request):
        form = CsvModelForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            form = CsvModelForm()

            obj= Csv.objects.get(activated=False)
            with open(obj.file_name.path, 'r') as f:
                reader = csv.reader(f)

                for i, row in enumerate(reader):
                    if i==0: 
                        pass
                    else: 
                        #row = "".join(row)
                        #row = row.replace(";"," ")
                        #row=row.split()

                        #print(row)
                        #print(type(row))
                        date = row[1]
                        user = User.objects.get(username=row[0])
                        Sales.objects.create(
                            date=date,
                            product= row[2],
                            user=user,
                        )
                obj.activated=True
                obj.save()
        return render(request, 'upload.html', {
        'form': form
    })

основной файл - urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from sales.views import import_view, home_view
urlpatterns = [
    path('admin/', admin.site.urls),
    path('import/', import_view, name="import"),
    path('', home_view, name="home"),

    path('import/', include('csvs.urls', namespace='csvs')),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

sales/views.py

from django.shortcuts import render

# Create your views here.

def import_view(request, *args, **kwargs): 
    return render(request, "import.html", {})

def home_view(request, *args, **kwargs): 
    return render(request, "home.html", {})

Если я удалю вышеуказанные представления (import, home), шаблон, который у меня есть для home.html и удалю из csvs.urls.py этот 'import/' и удалю то же самое из главного файла - urls. py, вот так: path('', include('csvs.urls', namespace='csvs')), форма отображается на главной странице, в другом случае нет.

Я пытался изменить последнюю строку из csvs/view.py и поставить 'import.html' и в import.html иметь тот же код, что и в upload.html, но все равно ничего.

upload.html

{% extends 'base.html' %}
{% block title %}Import{% endblock %}

{% block content%}
<h1>Import</h1>
<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit">Confirm</button>
</form>
{% endblock%}

Я действительно застрял. Я хочу продолжить свой проект, но не знаю, как все это решить. Я новичок в django, mongodb.

Большое спасибо за уделенное время!

Примечание

Насколько я читал ваш код, проблема в main-urls.py будет решена, но вам придется решить import/ в sales.urls или csvs.urls

В main-urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from sales.views import import_view, home_view

othor_urls = [
    # This is for all csvs urls
    path('csvs/', include('csvs.urls')),
    # This is for all sales urls
    path('sales/', include('sales.urls')),
]

urlpatterns = [
    path('admin/', admin.site.urls),
    # Remove import/ as it is move to other_urls
    # path('import/', import_view, name="import"),
    path('', home_view, name="home"),
    path('import/', include(othor_urls)),
    # Also remove this whihc is moved to other_urls
    # path('import/', include('csvs.urls', namespace='csvs')),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Вернуться на верх