0

このようにビューにデータをリストするビューを作成しています

class DownloadView(ListView):
    template_name = 'mytemplate.html'

今私のそのビューでは、ページがロードされたときに、そのビューでpdfファイルを生成し(私ができる)、ファイルの保存オプションでユーザーにプロンプ​​トを表示する必要があります。どうやってやるの

4

2 に答える 2

3

djangoのドキュメントを確認してください。これにresponse['Content-Disposition']は、が入力されていることが示さ'attachment; filename="somefilename.pdf"'れていますが、PDFファイルのデータをに読み込んだ場合は、次のように機能する可能性がありますpdf_data

from django.http import HttpResponse

def serve_pdf_view(request):
    pdf_data = magically_create_pdf()
    return HttpResponse(pdf_data, content_type='application/pdf')
于 2012-11-29T08:32:10.517 に答える
0

リクエスト中に PDF を生成したり、Django を使用して静的ファイルを提供したりすることはお勧めしません。

最善の策は、すべての PDF をフォルダーに保存し、Apache または Nginx を使用してそれらを提供し、コンテンツ タイプ ヘッダーを application/octet-stream に設定して、応答が保存されることを示すことです。

- 編集 -

PDFを動的に生成するのが正しい解決策だと思いますが、リクエスト中に行うのではなく、タスクキューを使用します。PDF を要求するユーザーを認証および承認する必要がある場合は、Django で行いますが、X-Accel (nginx)、X-Sendfile (apache)、または同等のものを使用して、Web サーバーに実際のファイルを提供するように指示します。

Django は静的ファイルを提供するためのものではありません。djangoのドキュメントを引用すると、「できるからといって、そうすべきだというわけではありません」。

リクエスト中に PDF を生成することは、ユーザーを待たせ、リクエストがタイムアウトする可能性があり、長時間実行されるリクエストがサーバーを拘束し、せっかちなユーザーが更新を (繰り返し) 行い、最後に DOS 攻撃面になるため、お勧めできません。

于 2012-11-29T08:36:21.957 に答える