Django - Подскажите как отобразить csv таблицу
Осваиваю Django, и не могу разобраться в том как отобразить данные с csv таблицы. Пообщался с ChatGPT на эту тему, погуглил, попробовал разные варианты, но таблица не отображается. Есть подозрение, что не правильные пути к файлам.
Помогите, пожалуйста, разобраться, что именно я делаю не так.
Таблица должна брать данные из lp_state_protectorate.csv
и выводить таблицу на странице sait/table
.
csv файл находится в нескольких местах (Пробовал разные варианты):
- в корневом каталоге.
static/csv/lp_state_protectorate.csv
static/main/csv/lp_state_protectorate.csv
Вот код, который у меня есть в данный момент:
main\urls.py
:
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', views.index, name='home'),
# path('news/', views.news_home, name='news_name'),
path('about', views.about, name='about'),
path('table/', views.csv_table, name='table'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
views.py
:
from django.shortcuts import render
#from django.http import HttpResponse
# Create your views here.
def index(request):
data = {
'title': 'Main Page',
'values': ['Some', 'Hello', '123']
}
return render(request, 'main/index.html', data)
def about(request):
return render(request, 'main/about.html')
def csv_table(request):
return render(request, 'main/table.html')
{% extends 'main/layout.html' %}
{% block title %}{{ title }}{% endblock %}
{% block content %}
<div class="features">
<h1>{{ title }}</h1>
<p>Table</p>
<table>
{% for row in data %}
<tr>
{% for cell in row %}
<td>{{ cell }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
from django.conf import settings
import csv
from django.shortcuts import render
def csv_table(request):
csv_file_path = settings.BASE_DIR / 'static/csv/lp_state_protectorate.csv'
with open(csv_file_path, 'r') as file:
csv_reader = csv.reader(file)
data = list(csv_reader)
return render(request, 'main/table.html', {'data': data})
Источник: Stack Overflow на русском