Commit 71460730 by Mikalay Radchuk

Fixes AttributeError in HTMLFormRenderer.render

If `HTMLFormRenderer.render` will be called with default arguments,
`AttributeError: 'NoneType' object has no attribute 'get'` will be raised.
parent 72372efd
...@@ -341,6 +341,7 @@ class HTMLFormRenderer(BaseRenderer): ...@@ -341,6 +341,7 @@ class HTMLFormRenderer(BaseRenderer):
""" """
Render serializer data and return an HTML form, as a string. Render serializer data and return an HTML form, as a string.
""" """
renderer_context = renderer_context or {}
form = data.serializer form = data.serializer
style = renderer_context.get('style', {}) style = renderer_context.get('style', {})
......
...@@ -10,6 +10,7 @@ from django.core.cache import cache ...@@ -10,6 +10,7 @@ from django.core.cache import cache
from django.db import models from django.db import models
from django.test import TestCase from django.test import TestCase
from django.utils import six from django.utils import six
from django.utils.safestring import SafeText
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from rest_framework import permissions, serializers, status from rest_framework import permissions, serializers, status
...@@ -459,3 +460,28 @@ class TestHiddenFieldHTMLFormRenderer(TestCase): ...@@ -459,3 +460,28 @@ class TestHiddenFieldHTMLFormRenderer(TestCase):
field = serializer['published'] field = serializer['published']
rendered = renderer.render_field(field, {}) rendered = renderer.render_field(field, {})
assert rendered == '' assert rendered == ''
class TestHTMLFormRenderer(TestCase):
def setUp(self):
class TestSerializer(serializers.Serializer):
test_field = serializers.CharField()
self.renderer = HTMLFormRenderer()
self.serializer = TestSerializer(data={})
def test_render_with_default_args(self):
self.serializer.is_valid()
renderer = HTMLFormRenderer()
result = renderer.render(self.serializer.data)
self.assertIsInstance(result, SafeText)
def test_render_with_provided_args(self):
self.serializer.is_valid()
renderer = HTMLFormRenderer()
result = renderer.render(self.serializer.data, None, {})
self.assertIsInstance(result, SafeText)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment