Прежде всего, словарь report_line
ссылается на переменную student
, которая не существует в области действия метода.Исходя из вашего вопроса здесь Я предполагаю, что вы хотите экспортировать данные, отображаемые в вашем шаблоне.
Также я бы порекомендовал обновить текущий вопрос полным набором кодов.
Чтобы добиться этого, вы можете сделать что-то вроде этого:
import csv
from django.http import HttpResponse
def file_load_view(request):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachement; filename="report.csv"'
writer = csv.writer(response)
writer.writerow(['Student Name', 'Attendance'])
students = MarkAtt.objects.values('studName__VMSAcc').annotate(mark=Sum('attendance'))
# Note: we convert the students query set to a values_list as the writerow expects a list/tuple
students = students.values_list('studName__VMSAcc', 'mark')
for student in students:
writer.writerow(student)
return response
Ваш URL будет выглядеть примерно так:
url(r'^export/csv/$', views.file_load_view, name='export_data')
В вашем шаблоне:
<a href="{% url 'export_data' %}">Export Data</a>
Это для экспорта данных в файл csv
.Глядя на ваше расширение имени файла, кажется, что это поведение, которое вы ищете.Если вы хотите экспортировать в excel
файл, я бы порекомендовал посмотреть стороннюю библиотеку, например xlwt