bugfix> python > 投稿

私はこれに従いましたcoadingforentrepreneurs PDFを生成するためのチュートリアルとそれは正常に動作します。

問題は、POSTリクエストを使用してPDFを生成すると、405エラーが表示されることです。 postメソッドを使用してcustomer-idにアクセスし、請求書を生成しています。

これが私のGeneratePDFクラスです

class GeneratePDF(View):
    def get(self, request, *args, **kwargs):
        
            if request.method == 'POST':
                template = get_template('head/invoice.html')
                context = {
                "customer":"aaaa"
                }
                html = template.render(context)
                pdf = render_to_pdf('head/invoice.html', context)
                if pdf:
                    response = HttpResponse(pdf, content_type='application/pdf')
                    filename = "Invoice_%s.pdf" %("12341231")
                    content = "inline; filename='%s'" %(filename)
                    download = request.GET.get("download")
                if download:
                    content = "attachment; filename='%s'" %(filename)
                response['Content-Disposition'] = content
                return response
            
            template = get_template('head/invoice.html')
            context = {
                "customer":"aaaa"
            }
            html = template.render(context)
            pdf = render_to_pdf('head/invoice.html', context)
            if pdf:
                response = HttpResponse(pdf, content_type='application/pdf')
                filename = "Invoice_%s.pdf" %("12341231")
                content = "inline; filename='%s'" %(filename)
                download = request.GET.get("download")
                if download:
                    content = "attachment; filename='%s'" %(filename)
                response['Content-Disposition'] = content
                return response

他のファイルは編集していません

これがサーバーからの応答です

Method Not Allowed (POST): /employee/customer_printbill/
Method Not Allowed: /employee/customer_printbill/

私はdjangoの初心者ですが、この問題を解決できません。私を助けてください。

回答 1 件
  • 関数ベースのビューとクラスベースのビューを混在させています。定義する必要があります post クラスベースビューのメソッド、およびリクエストはそれにディスパッチされます post 方法。したがって、次のことを確認する必要はありません。 request.method です POST あなたの中で get メソッド、なぜなら POST リクエストはあなたによって処理されます post 方法。詳細については、DjangoDocsを参照してください。

あなたの答え