mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 13:30:12 +03:00
Add 'items' templatetag to iterate response with items in keys
This commit is contained in:
parent
81d914238f
commit
cebe4bdd8e
|
@ -1,7 +1,7 @@
|
||||||
{% load rest_framework %}
|
{% load rest_framework %}
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for key, value in results.items %}
|
{% for key, value in results|items %}
|
||||||
{% if key in details %}
|
{% if key in details %}
|
||||||
<tr><th>{{ key|capfirst }}</th><td {{ value|add_nested_class }}>{{ value|format_value }}</td></tr>
|
<tr><th>{{ key|capfirst }}</th><td {{ value|add_nested_class }}>{{ value|format_value }}</td></tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% load rest_framework %}
|
{% load rest_framework %}
|
||||||
<table class="table table-striped">
|
<table class="table table-striped">
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for k, v in value %}
|
{% for k, v in value|items %}
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ k|format_value }}</th>
|
<th>{{ k|format_value }}</th>
|
||||||
<td>{{ v|format_value }}</td>
|
<td>{{ v|format_value }}</td>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for row in results %}
|
{% for row in results %}
|
||||||
<tr>
|
<tr>
|
||||||
{% for key, value in row.items %}
|
{% for key, value in row|items %}
|
||||||
{% if key in columns %}
|
{% if key in columns %}
|
||||||
<td {{ value|add_nested_class }} >
|
<td {{ value|add_nested_class }} >
|
||||||
{{ value|format_value }}
|
{{ value|format_value }}
|
||||||
|
|
|
@ -148,7 +148,7 @@ def format_value(value):
|
||||||
return template_render(template, context)
|
return template_render(template, context)
|
||||||
elif isinstance(value, dict):
|
elif isinstance(value, dict):
|
||||||
template = loader.get_template('rest_framework/admin/dict_value.html')
|
template = loader.get_template('rest_framework/admin/dict_value.html')
|
||||||
context = {'value': value.items()}
|
context = {'value': value}
|
||||||
return template_render(template, context)
|
return template_render(template, context)
|
||||||
elif isinstance(value, six.string_types):
|
elif isinstance(value, six.string_types):
|
||||||
if (
|
if (
|
||||||
|
@ -163,6 +163,12 @@ def format_value(value):
|
||||||
return six.text_type(value)
|
return six.text_type(value)
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def items(value):
|
||||||
|
if hasattr(value, 'items'):
|
||||||
|
return value.items()
|
||||||
|
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def add_nested_class(value):
|
def add_nested_class(value):
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
|
|
|
@ -656,14 +656,13 @@ class AdminRendererTests(TestCase):
|
||||||
renderer_classes = (AdminRenderer, )
|
renderer_classes = (AdminRenderer, )
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
return Response({'foo' : 'a string'})
|
return Response({'foo': 'a string'})
|
||||||
view = DummyView.as_view()
|
view = DummyView.as_view()
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = view(request)
|
response = view(request)
|
||||||
response.render()
|
response.render()
|
||||||
self.assertInHTML('<tr><th>Foo</th><td>a string</td></tr>', str(response.content))
|
self.assertInHTML('<tr><th>Foo</th><td>a string</td></tr>', str(response.content))
|
||||||
|
|
||||||
|
|
||||||
def test_render_dict_with_items_key(self):
|
def test_render_dict_with_items_key(self):
|
||||||
factory = APIRequestFactory()
|
factory = APIRequestFactory()
|
||||||
|
|
||||||
|
@ -671,7 +670,7 @@ class AdminRendererTests(TestCase):
|
||||||
renderer_classes = (AdminRenderer, )
|
renderer_classes = (AdminRenderer, )
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
return Response({'items' : 'a string'})
|
return Response({'items': 'a string'})
|
||||||
|
|
||||||
view = DummyView.as_view()
|
view = DummyView.as_view()
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
|
@ -679,7 +678,6 @@ class AdminRendererTests(TestCase):
|
||||||
response.render()
|
response.render()
|
||||||
self.assertInHTML('<tr><th>Items</th><td>a string</td></tr>', str(response.content))
|
self.assertInHTML('<tr><th>Items</th><td>a string</td></tr>', str(response.content))
|
||||||
|
|
||||||
|
|
||||||
def test_render_dict_with_iteritems_key(self):
|
def test_render_dict_with_iteritems_key(self):
|
||||||
factory = APIRequestFactory()
|
factory = APIRequestFactory()
|
||||||
|
|
||||||
|
@ -687,7 +685,7 @@ class AdminRendererTests(TestCase):
|
||||||
renderer_classes = (AdminRenderer, )
|
renderer_classes = (AdminRenderer, )
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
return Response({'iteritems' : 'a string'})
|
return Response({'iteritems': 'a string'})
|
||||||
|
|
||||||
view = DummyView.as_view()
|
view = DummyView.as_view()
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user