Django / django-easy-pdf: объект «NoneType» не имеет атрибута «encode»

Я пытаюсь заставить django-easy-pdf работать, но я получаю эту ошибку:

Environment: Request Method: GET Request URL: http://localhost:8001/lld/tesco-greenfield-datacenter-deployment/pdf/ Django Version: 1.8.2 Python Version: 2.7.6 Installed Applications: ('django_admin_bootstrapped', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'lld', 'registration') 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 "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 132. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view 22. return view_func(request, *args, **kwargs) File "/home/vagrant/shared/RepeatableDesign/lld/views.py" in render_lld_pdf 79. {'document': document, 'sections': sections}) File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in render_to_pdf_response 166. pdf = render_to_pdf(template, context, encoding=encoding, **kwargs) File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in render_to_pdf 139. return html_to_pdf(content, encoding, **kwargs) File "/usr/local/lib/python2.7/dist-packages/easy_pdf/rendering.py" in html_to_pdf 65. link_callback=link_callback, **kwargs) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/document.py" in pisaDocument 89. encoding, context=context, xml_output=xml_output) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/document.py" in pisaStory 57. pisaParser(src, context, default_css, xhtml, encoding, xml_output) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/parser.py" in pisaParser 685. context.parseCSS() File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in parseCSS 498. self.css = self.cssParser.parse(self.cssText) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in parse 434. src, stylesheet = self._parseStylesheet(src) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in _parseStylesheet 522. src, stylesheetImports = self._parseAtImports(src) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/cssParser.py" in _parseAtImports 606. stylesheet = self.cssBuilder.atImport(import_, mediums, self) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/w3c/css.py" in atImport 874. return cssParser.parseExternal(import_) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in parseExternal 372. cssFile = self.c.getFile(cssResourceName, relative=self.rootPath) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/context.py" in getFile 822. return getFile(self._getFileDeprecated(name, relative)) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/util.py" in getFile 635. file = pisaFileObject(*a, **kw) File "/usr/local/lib/python2.7/dist-packages/xhtml2pdf/util.py" in __init__ 516. uri = uri.encode('utf-8') Exception Type: AttributeError at /lld/tesco-greenfield-datacenter-deployment/pdf/ Exception Value: 'NoneType' object has no attribute 'encode' 

В соответствии с этими:

Объект 'NoneType' не имеет атрибута 'encode'

Объект «NoneType» не имеет ошибки «encode» атрибута в django

Я проверил, что моя модель возвращает объект unicode:

 def save(self, *args, **kwargs): ''' auto-creates slug in new_lld form, from document.customer & document.title and auto-populates document sections ''' if not self.id: # Newly created object, so set slug document_slug = self.customer + "-" + self.title self.slug = slugify(document_slug) original_sections = \ DocumentType.objects.get(name=self.document_type) \ .section_set.all() for section in original_sections: section.id = None section.associated_document = self.slug section.save() super(Document, self).save(*args, **kwargs) def __unicode__(self): name = self.customer + "-" + self.title return name 

Это мое мнение:

 def render_lld_pdf(request, slug): document = get_object_or_404(Document, slug=slug) sections = \ get_list_or_404(Section.objects.filter (associated_document__startswith=document.slug)) return render_to_pdf_response(request, 'lld/print_lld.html', {'document': document, 'sections': sections}, encoding=u'utf-8') 

Я не понимаю, как это исправить?

EDIT: добавление в print document print type(document) дает следующее:

 Greenfield Datacenter Deployment <class 'lld.models.Document'> No handlers could be found for logger "xhtml2pdf" 

2 Solutions collect form web for “Django / django-easy-pdf: объект «NoneType» не имеет атрибута «encode»”

Я даже не могу поверить, что несколько дней плакал и рвал волосы, потому что использовал шрифт Google. Да, когда я удалил <link href="http://fonts.googleapis.com/css?family=Lato:400,700" rel="stylesheet" type="text/css"> из моего шаблона, ошибка vamoosed!

После раскола в xhml2pdf я увидел, что @RMPhoenix прав, единственным решением (на данный момент) является удаление CSS, вызывающего эту ошибку. Отслеживание ясно показывает, что синтаксический анализатор CSS вызывает ошибку.

Но чем более уместным я считаю этот фрагмент кода:

 xhtml2pdf/parser.py in pisaParser at line 711: if default_css: context.addDefaultCSS(default_css) pisaPreLoop(document, context) #try: context.parseCSS() #except: # context.cssText = DEFAULT_CSS # context.parseCSS() # context.debug(9, pprint.pformat(context.css)) pisaLoop(document, context) 
  • читать, выделять, сохранять PDF программно
  • .xlsx и xls (последние версии) в pdf с использованием python
  • Как перечислить все строки, содержащие PA / внутри html-файла, используя красивый суп
  • Отправка HTML в PDF на сайте Django
  • Заполнение файла PDF - Python
  • Манипуляция поля формы PDF
  • Создать PDF с помощью python
  • Извлечение изображений из PDF с использованием python PyPDF2
  • Как создать форматированную таблицу pdf или eps с помощью Python?
  • Как создать динамический список заданий для принтеров Xerox?
  • Как создать PDF-документ с разными размерами страниц в reportlab, python
  •  
    Interesting Posts for Van-Lav

    Невозможно записать в файл с использованием многопроцессорности Python

    Интерфейс администратора для SQLAlchemy?

    Как я могу получить полный список запущенных процессов на Mac из приложения python

    Python и urllib

    проверьте, имеет ли моя команда «import pdb» в emacs / git?

    Неустранимая ошибка во время Py_Finalize во встроенном приложении Python

    Как сериализовать объект Java таким образом, чтобы его можно было десериализовать с помощью pickle (Python)?

    Является ли постоянный список используемым в цикле, построенном / удаленным с каждым проходом?

    В Python, как я могу запросить список слов для соответствия определенным критериям запроса?

    Django RESTful API error "Тип объекта« Пользователь »не имеет атрибута« _meta »»

    Рекурсивная циклическая функция в Python

    График анимации Python

    Печать возвращаемого значения в функции

    В Django, как очистить сессионный ключ?

    Как я могу использовать pywin32 с virtualenv без необходимости включать папку узлов сайта хост-среды?

    Python - лучший язык программирования в мире.