Html итерация по словарю в django и загрузка кнопки
Я работаю над приложением на Django 2 pbl:
Я использовал список по умолчанию, но получаю следующую ошибку:
"AttributeError at /views.download_my_pdf Объект 'str' не имеет атрибута 'read'"
Я хочу загрузить свою домашнюю страницу в pdf
Где я ошибся, пожалуйста?
Django views.py
from django.shortcuts import render
from django.core.files.storage import FileSystemStorage
import pandas as pd
import datetime
from datetime import datetime as td
import os
from collections import defaultdict
from django.http import HttpResponse
from wsgiref.util import FileWrapper
def home(request):
if request.method == 'POST':
uploaded_file = request.FILES['document']
uploaded_file2 = request.FILES['document2']
if uploaded_file.name.endswith('.xls'):
savefile = FileSystemStorage()
name = savefile.save(uploaded_file.name, uploaded_file)
name2 = savefile.save(uploaded_file2.name, uploaded_file2)
d = os.getcwd()
file_directory = d+'\\media\\'+name
file_directory2 = d+'\\media\\'+name2
results,output_df =results1(file_directory,file_directory2)
return render(request,"results.html", {"results":results,"output_df":output_df,})
return render(request, "index.html")
def readfile(uploaded_file):
data = pd.read_excel(uploaded_file, index_col=None)
return data
def results1(file1,file2):
results_list = defaultdict(list)
names_loc = file2
listing_file = pd.read_excel(file1, index_col=None)
for x in date_index:
if time>2h:
results_list["List of samples better"].append(sample_id)
if len(u_index) > 1:
results_list["List of Samples "].append(sample_id)
output_df = output_df.append(row_to_add, ignore_index=True)
else:
results_list["List of Samples not in the listing file"].append(sample_name[0])
except:
print('The template name isnt good: {}'.format(sample_id))
return results_list, output_df.to_html()
def download_pdf(request):
filename = 'faults.pdf'
content = FileWrapper(filename)
response = HttpResponse(content, content_type='application/pdf')
response['Content-Length'] = os.path.getsize(filename)
response['Content-Disposition'] = 'attachment; filename=%s' % 'faults.pdf'
return response
.html Я использовал здесь список по умолчанию для получения : Ключ: -значение -значение -значение Ключ2: -значение -значение значение
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Dashboard Result</title>
</head>
<body style="margin-top: 30px; padding: 100px">
<a class="btn btn-primary" href="{% url 'download_pdf' %}" role="button">Download pdf</a>
{% for key, value in results1.items %}
<tr>
<td>{{ key }} </td>
<td>{{ value }} </td>
</tr>
{% endfor %}
</body>
</html>
urls.py моего приложения в django
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
path('views.download_my_pdf', views.download_pdf, name="download_pdf"),
]