Size: a a a

Django [ru] #STAY HOME

2020 August 02

AT

Alex Ted in Django [ru] #STAY HOME
это батарейки, очень удобные, так что да, он заслуженно востребован
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Rudnitsky
Можно считать, что о запросу клиента -  это создается pdf-файл, раньше я его просто высвечивал его пользователю, и он его сам смотрел/распечатывал/сохранял. Теперь я хочу вдобавок сохранять ему этот файл на диск на автомате, и вот такая неожиданность...
Если у тебя уже есть такая логика,
Первым делом создай точку возвращающую файл

Потом открой свой шаблон, также как обычно, просто добавь аджаксом запрос на скачивание файла из второй точки
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Shodmon
Если у тебя уже есть такая логика,
Первым делом создай точку возвращающую файл

Потом открой свой шаблон, также как обычно, просто добавь аджаксом запрос на скачивание файла из второй точки
Спасибо за совет, но почему я не могу просто указать на файл и скачать его с помощью типа urllib? В девелоп-версии это делается нараз, а вот в продакшн - такой гемор...  Я вижу этот файл в на хостинге, но не могу получить на него ссылку? Ересь какая-то, что-то я не понимаю...
источник

DB

Dima Boger in Django [ru] #STAY HOME
Sergey Rudnitsky
Спасибо за совет, но почему я не могу просто указать на файл и скачать его с помощью типа urllib? В девелоп-версии это делается нараз, а вот в продакшн - такой гемор...  Я вижу этот файл в на хостинге, но не могу получить на него ссылку? Ересь какая-то, что-то я не понимаю...
А почему не можешь получить ссылку?
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Rudnitsky
Спасибо за совет, но почему я не могу просто указать на файл и скачать его с помощью типа urllib? В девелоп-версии это делается нараз, а вот в продакшн - такой гемор...  Я вижу этот файл в на хостинге, но не могу получить на него ссылку? Ересь какая-то, что-то я не понимаю...
1 зачем тебе юрл либ? Или файл на другом апи/сервисе?
2 где расположен файл? Как настроена выдача?
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Dima Boger
А почему не можешь получить ссылку?
Не знаю, почему, я подставлял уже несколько правдоподобных урлов, не находит
источник

DB

Dima Boger in Django [ru] #STAY HOME
А как файл сохраняется? В MEDIA_ROOT?
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Shodmon
1 зачем тебе юрл либ? Или файл на другом апи/сервисе?
2 где расположен файл? Как настроена выдача?
def generate_report_pdf(id, dreport, operator):
   # Rendered
   name_report = f'{operator}_Memorandum{id}.pdf'
   name_template = f'Memorandum{id}.html'
   html_string = render_to_string('0reports/' + name_template, dreport)
   html = HTML(string=html_string)
   result = html.write_pdf()
   fname = os.path.join(tempfile.gettempdir(), name_report)
   fo = open(fname, "wb")
   fo.write(result)
   fo.close()
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Rudnitsky
def generate_report_pdf(id, dreport, operator):
   # Rendered
   name_report = f'{operator}_Memorandum{id}.pdf'
   name_template = f'Memorandum{id}.html'
   html_string = render_to_string('0reports/' + name_template, dreport)
   html = HTML(string=html_string)
   result = html.write_pdf()
   fname = os.path.join(tempfile.gettempdir(), name_report)
   fo = open(fname, "wb")
   fo.write(result)
   fo.close()
Дальше
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Dima Boger
А как файл сохраняется? В MEDIA_ROOT?
Нет, в о временный каталог, tmp. Вот как я его создаю и сохраняю, теперь мне нужно его просто сохранить на диск пользователя
источник

S

Shodmon in Django [ru] #STAY HOME
Ты можешь это не сохраняя сразу выдать респонсе или сохранив сделай то, что выше написал
источник

S

Shodmon in Django [ru] #STAY HOME
Sergey Rudnitsky
Можно считать, что о запросу клиента -  это создается pdf-файл, раньше я его просто высвечивал его пользователю, и он его сам смотрел/распечатывал/сохранял. Теперь я хочу вдобавок сохранять ему этот файл на диск на автомате, и вот такая неожиданность...
Эту вьюху покажи, в пасту
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Могу, и выдаю responce, уже из этого сформированного файла. Господи, чувствую себя дебилом - на продуктиве есть готовый файл, я не могу его тупо сохранить у пользователя, вызвав простую вьюшку
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
def report_pdf(request, id):
   operator = str(request.user)
   """ Показываем pdf """
   name_report = f'{operator}_Memorandum{id}.pdf'
   if id == '1' or id == '2' :
       fname = os.path.join(tempfile.gettempdir(), name_report)
       fi = open(fname, "rb")
       # Creating http response
       response = HttpResponse(content_type='application/pdf;')
       response['Content-Disposition'] = 'inline; filename=' + name_report
       response['Content-Transfer-Encoding'] = 'binary'
       response.write(fi.read())
       fi.close()
       return response
источник

SP

Sergey Python in Django [ru] #STAY HOME
канал по джанго и рестфреймворку на русском языке показывает блюпринты основных девелоп кейсов  https://www.youtube.com/channel/UC_hPYclmFCIENpMUHpPY8FQ имхо лучший канал по джанге.
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
Вот вьюха, которая показывает ранее сохраненный файл
источник

SR

Sergey Rudnitsky in Django [ru] #STAY HOME
И все, что мне нужно, скопировать этот файл на компьютер пользователя.
источник

S

Shodmon in Django [ru] #STAY HOME
Смотри
источник

SP

Sergey Python in Django [ru] #STAY HOME
Sergey Rudnitsky
И все, что мне нужно, скопировать этот файл на компьютер пользователя.
так можешь сделать
источник

SP

Sergey Python in Django [ru] #STAY HOME
источник