gabrielgrant / django-multiforloop

Extends django's forloop syntax to allow simultaneously iterating over multiple lists (zipping)
19 stars 6 forks source link

Hello guys , I am trying to use it in Django 4.0.6 but I have the below issue , in Django 3.2.4 is working fine. #10

Open RamVic opened 1 year ago

RamVic commented 1 year ago

Internal Server Error: /calculadora Traceback (most recent call last): File "/home/ramirosv/.local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/ramirosv/ramsys1/webpage/dashboard/monitoreo/vista1.py", line 146, in calcu return render (request,'calculadora.html',{'comodin' : comodin,'comodin2':comodin2,'info':ips,'tabla': tabla,'infoip':infoip}) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/shortcuts.py", line 24, in render content = loader.render_to_string(template_name, context, request, using=using) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string return template.render(context, request) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/backends/django.py", line 62, in render return self.template.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 167, in _render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/defaulttags.py", line 322, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'str' object has no attribute 'render_annotated'

After to do the test.

ERROR: test_for_tag_multi (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 21, in test_for_tag_multi self.tag_test(template, context, output) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_longest (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 36, in test_for_tag_multi_longest self.tag_test(template, context, output) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_longest_empty (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 42, in test_for_tag_multi_longest_empty self.tag_test(template, context, output) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_longest_null (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 48, in test_for_tag_multi_longest_null self.tag_test(template, context, output) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_reversed (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 30, in test_for_tag_multi_reversed self.tag_test("{% for x in x_list reversed; y in y_list %}{{ x }}:{{ y }}/{% endfor %}", {"x_list": ('x1', 'x2', 'x3'), "y_list": ('y1', 'y2', 'y3')}, u"x3:y1/x2:y2/x1:y3/") File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_truncate (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 27, in test_for_tag_multi_truncate self.tag_test("{% for x in x_list; y in y_list %}{{ x }}:{{ y }}/{% endfor %}", {"x_list": ('one', 1, 'carrot'), "y_list":('two', 2)}, u"one:two/1:2/") File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'

====================================================================== ERROR: test_for_tag_multi_unpack (multiforloop.tests.TagTests)

Traceback (most recent call last): File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 24, in test_for_tag_multi_unpack self.tag_test("{% for x in x_list; y,z in yz_list %}{{ x }}:{{ y }}, {{ z }}/{% endfor %}", {"x_list": ('x1', 'x2', 'x3'), "yz_list": (('y1', 'z1'), ('y2', 'z2'), ('y3', 'z3'))}, u"x1:y1, z1/x2:y2, z2/x3:y3, z3/") File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/tests.py", line 16, in tag_test self.assertEqual(t.render(Context(context)), output) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 958, in render_annotated return self.render(context) File "/home/ramirosv/ramsys1/lib/python3.8/site-packages/multiforloop/templatetags/multifor.py", line 118, in render return nodelist.render(context) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/home/ramirosv/.local/lib/python3.8/site-packages/django/template/base.py", line 1000, in return SafeString("".join([node.render_annotated(context) for node in self])) AttributeError: 'SafeString' object has no attribute 'render_annotated'


Ran 7 tests in 0.012s

FAILED (errors=7) Destroying test database for alias 'default'...

gabrielgrant commented 1 year ago

Hey, thanks for the bug report. It's not immediately obvious to me what's breaking here. Did you ever figure this out?

0phiTeS commented 3 months ago

I managed to solve it by replacing this code in django.templates.base: `class NodeList(list):

def render(self, context):
    return SafeString("".join([node.render_annotated(context) for node in self]))`

with this: `class NodeList(list):

def render(self, context):
    return SafeString("".join([node.render_annotated(context) if isinstance(node,Node) else node for node in self]))`

I am sure there has to be some other way, without messing with the django installation