第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 django-wkhtmltopdf 生成時將 PDF 保存到磁盤

使用 django-wkhtmltopdf 生成時將 PDF 保存到磁盤

交互式愛情 2023-06-13 10:58:16
我要實現(xiàn)的是:用戶將查詢參數(shù)從 React FE 微服務(wù)發(fā)送到 Django BE 微服務(wù)。URI 類似于/api/reports?startingPage=12&dataView=Region這些 PDF 太大而無法在 FE 中生成,所以在服務(wù)器端生成請求進(jìn)入從數(shù)據(jù)庫中查詢view.py相關(guān)數(shù)據(jù)的位置dataView=Region,遍歷每一行并為每個項目生成一個 PDF 報告每個都dataView=Region可以包含幾百個項目,每個項目都是自己的報告,可以是一頁長或幾頁長隨著報告的生成,它們應(yīng)該被保存到服務(wù)器持久卷聲明中,并且在它們?nèi)窟\(yùn)行之前不會被發(fā)送回 FE。當(dāng)它們?nèi)窟\(yùn)行后,我計劃將pypdf2所有 PDF 合并到一個大文件中。那時,文件被發(fā)送回 FE 進(jìn)行下載。我目前只處理 1. 和 3.,我無法:獲取要保存到存儲的文件防止 PDF 生成后被發(fā)送回 FE 的默認(rèn)行為正在生成 PDF,這很好。我正在嘗試實施此處找到的建議,但沒有得到預(yù)期的結(jié)果:將 pdf 從 django-wkhtmltopdf 保存到服務(wù)器(而不是作為響應(yīng)返回)這是我目前在 Django 方面擁有的:# urls.pyfrom django.urls import pathfrom .views import GeneratePDFViewapp_name = 'Reports'urlpatterns = [? ? path('/api/reports',? ? ? ? GeneratePDFView.as_view(), name='generate_pdf'),]# views.pyfrom django.conf import settingsfrom django.views.generic.base import TemplateViewfrom rest_framework.permissions import IsAuthenticatedfrom wkhtmltopdf.views import PDFTemplateResponse# Create your views here.class GeneratePDFView(TemplateView):? ? permission_classes = [IsAuthenticated]? ? template_name = 'test.html'? ? filename = 'test.pdf'? ? def generate_pdf(self, request, **kwargs):? ? ? ? context = {'key': 'value'}? ? ? ? # generate response? ? ? ? response = PDFTemplateResponse(? ? ? ? ? ? request=self.request,? ? ? ? ? ? template=self.template_name,? ? ? ? ? ? filename=self.filename,? ? ? ? ? ? context=context,? ? ? ? ? ? cmd_options={'load-error-handling': 'ignore'})我應(yīng)該注意另一個DOWNLOAD_ROOT,并且MEDIA_ROOT在應(yīng)用程序使用它們的地方工作正常。我什至嘗試過使用settings.MEDIA_ROOT因為我知道它有效,但仍然沒有保存任何東西。但正如您所見,我從超級基礎(chǔ)開始,沒有添加查詢、循環(huán)等。我的save_pdf()不同于我鏈接到的 SO 問題,因為那是我在我的應(yīng)用程序的其他部分使用的,并且它在那里保存文件很好。我確實嘗試了他們在 SO 問題中提供的內(nèi)容,但結(jié)果相同,但沒有保存。即:with?open("file.pdf",?"wb")?as?f: ????f.write(response.rendered_content)那么我需要做什么才能將這些 PDF 保存到磁盤?也許我需要使用不同的庫來滿足我的需要,因為django-wkhtmltopdf似乎開箱即用了很多我不想做的事情,我不清楚我是否可以覆蓋。
查看完整描述

1 回答

?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊

好的,我光滑的大腦一夜之間起了一些漣漪,今天早上想通了:


# views.py


class GeneratePDFView(TemplateView):

    permission_classes = [IsAuthenticated]


    def get(self, request, *args, **kwargs):

        template_name = 'test.html'

        filename = 'test.pdf'

        context = {'key': 'value'}


        # generate response

        response = PDFTemplateResponse(

            request=request,

            template=template_name,

            filename=filename,

            context=context,

            cmd_options={'load-error-handling': 'ignore'})


        # write the rendered content to a file

        with open(settings.PDF_DIR + '/' + filename, "wb") as f:

            f.write(response.rendered_content)


        return HttpResponse('Hello, World!')

這將 PDF 保存到磁盤,也沒有響應(yīng) PDF。顯然是一個我可以擴(kuò)展的最小功能示例,但至少解決了這兩個問題。


查看完整回答
反對 回復(fù) 2023-06-13
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號