TypeError at / app / profile /, the 'list' object is not processed handle_pageBegin args = ()

I need a button to create a PDF file (with Python 2.7, Django 1.8), but I don’t know how to express it on a machine.

I started by reading some articles, trying to learn from others how to do this.

Found this handy link that redirected me to the following links:

So, to print as PDF:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \ Method One: Using ReportLab ////////////////////////////////////////////// /////

pip install reportlab

ReportLab relies on Pillow, which is a third-party Python image library. If you run:

pip install Pillow

You will see something like this:

Requirement already satisfied: Pillow in c:\pythonprojects\virtualenvs\apis\lib\site-packages
Requirement already satisfied: olefile in c:\pythonprojects\virtualenvs\apis\lib\site-packages (from Pillow)

, , , .

------------------------------------------ 0.2 ( ) ----------------------------------------- -

1.

# views.py
from django.http import response
from django.core.files.storage import FileSystemStorage
from django.shortcuts import render, HttpResponse
from django.contrib.auth.decorators import login_required
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch
import requests
import praw


def profile(request):
        #PDF
        doc = SimpleDocTemplate("test.pdf")
        styles = getSampleStyleSheet()
        Story = [Spacer(1, 2 * inch)]
        style = styles["Normal"]

        #Webpage
        parsedData = []
        userData = {}
        if request.method == 'POST':
        #Data
            sub = request.POST.get('subreddit')
            reddit = praw.Reddit(client_id='client_id',
                                 client_secret='client_secret',
                                 user_agent='user_agent')
            # assuming you have a Reddit instance bound to variable `reddit`
            subreddit = reddit.subreddit(sub)

            print('Master, this was the data retrieved that is going to be displayed:')
            print(subreddit.display_name)  # Output: redditdev
            print(subreddit.title)  # Output: reddit Development
            print(subreddit.description)  # Output: A subreddit for discussion of ...
            print('Tell me if you want more and I can give that to you, no problem-------------')

         #PDF
            print('Now, Im gonna create a PDF file with the same data...')
            subreddit_name = subreddit.display_name
            subreddit_title = subreddit.title
            subreddit_description = subreddit.description

            p = Paragraph(subreddit_name, subreddit_title, subreddit_description,  style)
            Story.append(p)
            Story.append(Spacer(1, 0.2 * inch))
            doc.build(Story)
            print('The file was created and can be accessed in the root of the Django project. The name is test.pdf')
            print('Tell me to stop if you dont like what Im doing-------------')        

        #Webpage
            print('OK. Time to give that to the user as well...')
            userData['subreddit_name'] = subreddit.display_name
            userData['title'] = subreddit.title
            userData['description'] = subreddit.description
        parsedData.append(userData)
        return render(request, 'app/profile.html', {'data': parsedData})

, #PDF, .

2.

: enter image description here

Traceback :

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/app/profile/

Django Version: 1.8
Python Version: 2.7.12
Installed Applications:
('frontend',
 'app',
 'blog',
 'suit',
 'suit_redactor',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\django\core\handlers\base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "C:\PythonProjects\reddit_development\demonstration\app\views.py" in profile
  69.         doc.build(Story)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in build
  1213.         BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in build
  969.                     self.handle_flowable(flowables)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in handle_flowable
  834.             if frame.add(f, canv, trySplit=self.allowSplitting):
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\frames.py" in _add
  167.                 w, h = flowable.wrap(aW, h)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\paragraph.py" in wrap
  1191.         leftIndent = style.leftIndent

Exception Type: AttributeError at /app/profile/
Exception Value: 'unicode' object has no attribute 'leftIndent'

3. , ?

, :

p = Paragraph(subreddit_name, subreddit_title, subreddit_description,  style)
Story.append(p)
Story.append(Spacer(1, 0.2 * inch))
doc.build(Story)

------------------------------------------ 0.3 ----------------------------------------------

Christoph Bluoss ,

p = Paragraph("Some string", style)

,

1.

. 3

Story1 = [Spacer(1, 2 * inch)]

Story2 = [Spacer(1, 2 * inch)]

Story3 = [Spacer(1, 2 * inch)]

. 3

p1 = Paragraph(subreddit_name,  style)

p2 = Paragraph(subreddit_title, style)

p3 = Paragraph(subreddit_description, style)

. ,

Story1.append(p1)
Story1.append(Spacer(1, 0.2 * inch))

Story2.append(p2)
Story2.append(Spacer(1, 0.2 * inch))

Story3.append(p3)
Story3.append(Spacer(1, 0.2 * inch))

. doc.buil .

doc.build(Story1, Story2, Story3)

2.

: enter image description here

Traceback :

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/app/profile/

Django Version: 1.8
Python Version: 2.7.12
Installed Applications:
('frontend',
 'app',
 'blog',
 'suit',
 'suit_redactor',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\django\core\handlers\base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\django\contrib\auth\decorators.py" in _wrapped_view
  22.                 return view_func(request, *args, **kwargs)
File "C:\PythonProjects\reddit_development\demonstration\app\views.py" in profile
  77.         doc.build(Story1, Story2, Story3)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in build
  1213.         BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in build
  966.                 self.clean_hanging()
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in clean_hanging
  554.             self.handle_flowable(self._hanging)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in handle_flowable
  828.             f.apply(self)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in apply
  153.             annotateException("\nhandle_%s args=%s"%(action,ascii(args)))
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\lib\utils.py" in annotateException
  1390.     rl_reraise(t,v,b)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in apply
  146.             getattr(doc,arn)(*args)
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in handle_pageBegin
  1189.         self._handle_pageBegin()
File "C:\PythonProjects\virtualenvs\apis\lib\site-packages\reportlab\platypus\doctemplate.py" in handle_pageBegin
  579.         self.pageTemplate.onPage(self.canv,self)

Exception Type: TypeError at /app/profile/
Exception Value: 'list' object is not callable
handle_pageBegin args=()

3. , :

, :

 p1 = Paragraph(subreddit_name,  style)
 p2 = Paragraph(subreddit_title, style)
 p3 = Paragraph(subreddit_description, style)
 Story1.append(p1)
 Story1.append(Spacer(1, 0.2 * inch))
 Story2.append(p2)
 Story2.append(Spacer(1, 0.2 * inch))
 Story3.append(p3)
 Story3.append(Spacer(1, 0.2 * inch))
 doc.build(Story1, Story2, Story3)

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\ : WeasyPrint/////////////////////////////////////////////////

, .

+4
2

(v 0.3) http://www.reportlab.com/docs/reportlab-userguide.pdf (. 68):

BaseDocTemplate.build(self, flowables, filename = None, canvasmaker = canvas.Canvas)

, ( flowables) , .

, , build() . , , 3 , , .

story = [Spacer(1, 2 * inch)]
story.append(Paragraph(subreddit_name,  style))
story.append(Spacer(1, 2 * inch))
story.append(Paragraph(subreddit_title, style))
story.append(Spacer(1, 2 * inch))
story.append(Paragraph(subreddit_description, style))
doc.build(story)

. ( python3)

+2

Paragraph(), . subreddit_title, unicode .

:

p = Paragraph("Some string", style)

2 pdf. http://weasyprint.org/ . Reportlab .

+1

Source: https://habr.com/ru/post/1671987/


All Articles