Как использовать отчет из представления внутри другого представления в Django? - PullRequest
0 голосов
/ 16 ноября 2011

У меня есть форма, в которую я загружаю файл и создаю из него отчет. Дело в том, что я также хотел бы сделать отчет доступным для скачивания в виде архива. Я хотел бы как-то включить CSS и JS (которые я наследую из своего макета) в отчет, но я не знаю, как это сделать. Пока что я не храню файл (из которого создается отчет) на стороне сервера, я удаляю его после того, как с ним покончено.

Единственное решение, о котором я мог думать до сих пор, было: из моего представления создания архива используйте urllib для отправки в форму, генерирующую отчет, сохраните ответ и просто перепишите ссылки на файлы таблицы стилей / JS.

Есть ли более простой способ сделать это? Есть ли способ сохранить некоторые файлы на стороне сервера в течение всего сеанса клиента?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Используйте HttpResponse в представлении, которое вы используете, чтобы показать сгенерированный отчет вместо публикации с помощью urllib.Если у вас есть что-то вроде

def report_view(request):
   ...
   return render_to_response(request,....)

Затем используйте объект ответа для создания архива

def report_view(request):
   ...
   archive_link = "/some/nice/url/to/the/archive"
   response = render_to_response(request, ... { "archive-link" : archive_link})
   store_archive(response)
   return response

def store_archive(response):
     # here you will need to find css/js files etc
     # and bundle them in whatever type of archive you like
     # then temporarily store that archive so it can be accessed by the archive_link
     # you previously used in your view to allow for downloading

def report_archive_view(request):
     # serve the temporarily stored archive, then delete it if you like

Вы можете найти все, что вам нужно знать о HttpResponse вДжанго документы .

Хотя это может сработать для вас, я сомневаюсь, что это то, что вы действительно ищете, может быть, то, что вы действительно ищете, это создать отчет в формате PDF с использованием ReportLab ?

0 голосов
/ 16 ноября 2011

вы всегда можете сохранить файлы и иметь задание cron, которое удаляет файлы, сессия которых истекла

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