Требуется ли сторонний пакет для загрузки HTML в документ Word в Django, или это может быть сделано изначально с использованием Python? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь загрузить DetailView в текстовый документ.Благодаря ruddra в другом выпуске SO я открыл здесь . Теперь я могу сделать это через CSV, и сторонние пакеты не требуются.

class ExportDataDetailView(LoginRequiredMixin,DetailView):

    model = Author
    context_object_name = 'author_detail'

    def render_to_response(self, context, **response_kwargs):
        user = context.get('author_detail')  # getting User object from context using context_object_name
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename="users.csv"'
        writer = csv.writer(response)
        writer.writerow(['username', 'First name', 'Last name', 'Email address'])
        writer.writerow([user.username, user.first_name, ...])
        return response

Мне интересно, доступна ли такая же опция для документа Word.Я нашел подобный вопрос здесь, и Руддра также указал мне на него, но он был с 2014 года ссылка

from docx import *
from docx.shared import Inches

def TestDocument(request):

    document = Document()
    docx_title="TEST_DOCUMENT.docx"
    # ---- Cover Letter ----
    document.add_picture((r'%s/static/images/my-header.png' % (settings.PROJECT_PATH)), width=Inches(4))
    document.add_paragraph()
    document.add_paragraph("%s" % date.today().strftime('%B %d, %Y'))

    document.add_paragraph('Dear Sir or Madam:')
    document.add_paragraph('We are pleased to help you with your widgets.')
    document.add_paragraph('Please feel free to contact me for any additional information.')
    document.add_paragraph('I look forward to assisting you in this project.')

    document.add_paragraph()
    document.add_paragraph('Best regards,')
    document.add_paragraph('Acme Specialist 1]')
    document.add_page_break()

    # Prepare document for download        
    # -----------------------------
    f = StringIO()
    document.save(f)
    length = f.tell()
    f.seek(0)
    response = HttpResponse(
        f.getvalue(),
        content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
    )
    response['Content-Disposition'] = 'attachment; filename=' + docx_title
    response['Content-Length'] = length
    return response

Возможно ли использовать только Python и Django или является третьей сторонойтребуется зависимость?Я пытаюсь придерживаться представлений классов на основе всего проекта и избегать столько зависимостей, сколько необходимо, если у меня нет другого выбора.

Я просмотрел формальную документацию, 1 и 2 , но может показаться, что сторонний пакет - это единственный путь для файлов других типов, кроме CSV?

Заранее спасибо за ваш отзыв.

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