Как отобразить кадр данных из представлений в шаблон django - PullRequest
0 голосов
/ 22 января 2020

Я создал приложение в django, где я прочитал CSV-файл и сохранил его в папке мультимедиа. Затем я преобразовал CSV-файл в pandas dataframe, теперь мне нужно отобразить dataframe в мой шаблон и отобразить его в виде таблицы bootstrap (по крайней мере, общий тег таблицы). Как я должен отправить dataframe и как отобразить его в виде таблицы bootstrap в шаблоне. Спасибо

Views.py

def dq(request):
    if request.method == 'POST':
        uploaded_file = request.FILES['document']

        fs = FileSystemStorage()
        fs.save(uploaded_file.name, uploaded_file)

        file_path = settings.MEDIA_ROOT + '\\' + uploaded_file.name

        df = pd.read_csv(file_path)


    return render(request,'dq.html')

Ответы [ 2 ]

1 голос
/ 22 января 2020

Views.py (FBV)

df_html = df.to_html(index=False)
return render(request, 'dq.html', {'df_html': df_html})

Views.py (CBV) (рекомендуется)

class View(...View):

    template_name = 'dq.html'        

    def get_context_data(self, **kwargs):    
        context = super(View, self).get_context_data(**kwargs)
        ... # In your case.
        df = pd.read_csv(file_path)
        context['df_html'] = df.to_html(index=False)
        return context

В вашем html: (dq. html)

{{df_html}}
0 голосов
/ 22 января 2020

Вы можете использовать pandas .DataFrame.to_ html,

def dq(request):

    if request.method == 'POST':
        uploaded_file = request.FILES['document']

        fs = FileSystemStorage()
        fs.save(uploaded_file.name, uploaded_file)

        file_path = settings.MEDIA_ROOT + '\\' + uploaded_file.name
        df = pd.read_csv(file_path)
        html = df.to_html()

    return render(request,'dq.html', {'html': html})

dq. html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{html|safe}}
</body>
</html>

И вы можете проектировать стол.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...