2017-08-18 11 views
0

以下のコードでは、管理ページにPDF形式で保存ボタンをカスタマイズして追加しました。 [pdfとして保存]ボタンをクリックしている間は、現在のページの詳細をpdf形式で表示する必要があります。現在のページの別のデータを取得して、pdf形式(my_template.html)で表示することはできません。どうやってするの?前もって感謝します。Django管理ページをPDFとして保存ボタン

views.py

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

# Create your views here. 
from django.http import HttpResponse 
from django.views.generic import View 
from django.db import models 
from details.utils import render_to_pdf #created in step 4 
from .models import UserDetails 

class GeneratePdf(View): 
    def get(self, request, *args, **kwargs): 
     #THIS IS THE PLACE WHERE I GET STUCK 
     all = { 
      "Name": "obj.name", 
      "Email": "obj.email", 
      "Address": "obj.address", 
      "DOB": "obj.dob", 
      "Gender": "obj.gender", 
     } 
     pdf = render_to_pdf('my_template.html', all) 
     return HttpResponse(pdf, content_type='application/pdf') 
urls.py

"""myapp URL Configuration 

The `urlpatterns` list routes URLs to views. For more information please see: 
    https://docs.djangoproject.com/en/1.11/topics/http/urls/ 
Examples: 
Function views 
    1. Add an import: from my_app import views 
    2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 
Class-based views 
    1. Add an import: from other_app.views import Home 
    2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 
Including another URLconf 
    1. Import the include() function: from django.conf.urls import url, include 
    2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 
""" 
from django.conf.urls import url 
from django.contrib import admin 

from details.views import GeneratePdf 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^pdf/$', GeneratePdf.as_view(),name='generatepdf'), 
] 

答えて

1

Anton Shurashov's answerが正しいです。それに加えて、必要なタグにURLを指定しているテンプレートでは、アクセスするデータのIDを知っておく必要があります。データがデータベースに保存されている場合にのみ機能します。

{%url 'generatepdf' adminform.form.instance.id %} 

"""adminform.form.instance.id"""は、現在のページデータのIDを示す一般的なインスタンスです。

ボタンは、データを保存した後にのみ表示されます。

0

urls.py

from details.views import GeneratePdf 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^pdf/(?P<user_id>[0-9]+)/$', GeneratePdf.as_view(), name='generatepdf'), 
] 

views.py

from django.http import HttpResponse 
from django.views.generic import View 
from django.db import models 
from details.utils import render_to_pdf 
from .models import UserDetails 

class GeneratePdf(View): 
    def get(self, request, *args, **kwargs): 
     obj = UserDetails.objects.get(id=kwargs.get('user_id')) 
     all = { 
      "Name": obj.name, 
      "Email": obj.email, 
      "Address": obj.address, 
      "DOB": obj.dob, 
      "Gender": obj.gender, 
     } 
     pdf = render_to_pdf('my_template.html', all) 
     return HttpResponse(pdf, content_type='application/pdf') 
+0

NoReverseMatch:引数 '(' '、)'およびキーワード引数 '{}'が見つからない場合、 'generatepdf'を逆にします。 1つのパターンが試されました:['pdf /(?P [0-9] +)/ $'] –

+0

あなたの考えに基づいて実行中に上記のエラーが発生しました。 –

+0

NoReverseMatch:引数 '(' '、)'およびキーワード引数 '{}'がない 'generatepdf'を逆にします。 1つのパターンが試されました:['pdf /(?P [0-9] +)/ $'] –

関連する問題