Skip to content

Django 1.10: ValueError: dictionary update sequence element #0 has length xx; 2 is required #20

@florianm

Description

@florianm

Hi folks, just got first light on some sweet PDF output from your neat extension but I'm running into a weird bug in django-rest-framework.

Environment

  • Django 1.10.2
  • django-rest-swagger==2.0.7
  • djangorestframework==3.5.0
  • djangorestframework-csv==1.4.1
  • djangorestframework-filters==0.8.1
  • djangorestframework-gis==0.10.1
  • djangorestframework-jsonp==1.0.2
  • djangorestframework-yaml==1.0.3
  • dynamic-rest==1.5.0
  • rest-framework-latex==0.0.9

config:

TEMPLATES = [
    {
        # See: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATES-BACKEND
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
[...]

Expected

PDF output via rest-framework-latex

Error

Accessing an API view with rest-framework-latex's renderer enabled throws a

ValueError
dictionary update sequence element #0 has length 13; 2 is required

Hack

Change rest_framework/compat.py from

# backends template, e.g. django.template.backends.django.Template
    else:
        return template.render(context, request=request)

to

# backends template, e.g. django.template.backends.django.Template
    else:
        return template.render(dict(data=context), request=request)

so I can access it in my latex template like so

{% for obj in data %}
 {{ obj.some_field_that_my_api_exports|latex_safe }}
{% endfor %}

context is originally an OrderedDict of my queryset.
This is apparently absolutely required by all other renderers like the Browseable API renderer.
However, I couldn't figure out a way to access the OrderedDict in my template without wrapping it into a dict.

Unless I'm missing a straight-forward way to access the OrderedDict from the template, would it be possible to change LatexRenderer.render() to wrap data into a normal dict?

        tex = super(LatexRenderer, self).render(
            {"data": data}, accepted_media_type, renderer_context)

Sending PR for review and discussion.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions