Q - สอบถามเรื่อง ส่งค่า Django to PDF

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Q - สอบถามเรื่อง ส่งค่า Django to PDF

Q - สอบถามเรื่อง ส่งค่า Django to PDF

by theoneozz » 23/01/2019 3:48 pm

ผมใช้โค้ด xhtml2pdf เพื่อออกรายงาน โดยนำข้อมูลจากการ input เเล้วแปลงมาเป็นไฟล์ PDF ปัญหาคือ เมื่อทำการกดปุ่ม ออกรายงาน จะได้ข้อมูลที่เป็นไฟล์ PDF ซึ่งภายในมีเเค่ฟอร์ม ไม่มีข้อมูลที่มาจาก Input

ตัวอย่าง
1.jpg
1.jpg (21.81 KiB) Viewed 569 times
3.jpg
3.jpg (15.82 KiB) Viewed 569 times
2.jpg
2.jpg (24.45 KiB) Viewed 569 times
ผมใช้ django ในการรันผล

views.py

Code: Select all

from django.shortcuts import render
from django.views.generic import TemplateView
from django.template import loader
from django.http import HttpResponse
from django.views.generic import View
from .utils import render_to_pdf


# Create your views here.
class HomePageView(TemplateView):
    def get(self,request,**kwargs):
        return render(request, 'index.html', context=None)
def index(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        email = request.POST.get('email')
        phone = request.POST.get('phone')

        context = {
            'name':name,
            'email':email,
            'phone':phone
        }
        template = loader.get_template('result.html')

        return HttpResponse(template.render(context,request))

    else :
            #if post request is not true
            #returning the form template
            template = loader.get_template('index.html')
            return HttpResponse(template.render())

class GeneratePdf(View):
    def get(self, request, *args, **kwargs):
            # getting the template
            pdf = render_to_pdf('result.html')

            # rendering the template

            return HttpResponse(pdf, content_type='application/pdf')
    
urls.py

Code: Select all

from django.urls import path
from django.conf.urls import url
from studentinfo import views
from .views import GeneratePdf

urlpatterns = [
    path('',views.HomePageView.as_view()),
    path('result/',views.index),
    path('result/pdf/', GeneratePdf.as_view()),
    
]
index.html

Code: Select all

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Django Form</title>
    </head>
    <body>
        <h2>Django Form</h2>
        <form method="post" action="/result/">{% csrf_token %}
            <table>
                    <tr>
                            <td>Enter your name: </td>
                            <td><input type="text" name="name"/></td>
            
                    </tr>
                    <tr>
                        <td>Enter your email:</td>
                        <td><input type="email" name="email"/></td>
                    </tr>
                    <tr>
                        <td>Enter your phone:</td>
                        <td><input type="text" name="phone"/></td>
                    </tr>
                    <tr>
                        <td><button>Submit</button></td>
                        
                    </tr>
            </table>

        </form>
    
    </body>
</html>
result.html

Code: Select all

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>ทดสอบรับข้อมูลจากฟอร์ม</title>
    </head>
    <body>
        <h2>Django Form</h2>
        <form method="POST" action="result/pdf/">
            <table>
                    <tr>
                            <td>Name:</td>
                            
                            <td><strong>{{ name }}</strong></td>
            
                    </tr>
                    <tr>
                        <td>E-mail:</td>
                        <td><strong>{{ email }}</strong></td>
                    </tr>
                    <tr>
                        <td>Phone:</td>
                        <td><strong>{{ phone }}</strong></td>
                    </tr>
                    <td><a href="pdf/">ออกรายงาน</a></td>
            </table>
        </form>
    </body>
</html>

Top