Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Jinja2 static() function in HTML() #1302

Closed
anderoonies opened this issue Sep 9, 2022 · 1 comment
Closed

Use Jinja2 static() function in HTML() #1302

anderoonies opened this issue Sep 9, 2022 · 1 comment

Comments

@anderoonies
Copy link

  • Package version: 1.10.0
  • Django version: 3.2.14
  • Python version: 3.9.11

Description:

I'm trying to load a static image within an HTML() section of a crispy layout, using something like:

HTML("""
  <img src="{{ static('image.jpg') }}">
""")

Crispy is being rendered with Jinja2, using:

@pass_context
def crispy(context, form):
    return render_crispy_form(form, context=context)

This throws the following exception:

   File "/var/www/html/project/jinja2.py", line 20, in crispy
     return render_crispy_form(form, context=context)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/utils.py", line 170, in render_crispy_form
     return node.render(node_context)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 203, in render
     c = self.get_render(context).flatten()
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 119, in get_render
     actual_form.form_html = helper.render_layout(
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/helper.py", line 301, in render_layout
     html = self.layout.render(form, self.form_style, context, template_pack=template_pack)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 135, in render
     return self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 96, in get_rendered_fields
     return "".join(
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 97, in <genexpr>
     render_field(field, form, form_style, context, template_pack=template_pack, **kwargs)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/utils.py", line 66, in render_field
     return field.render(form, form_style, context, template_pack=template_pack)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 367, in render
     fields = self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 96, in get_rendered_fields
     return "".join(
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 97, in <genexpr>
     render_field(field, form, form_style, context, template_pack=template_pack, **kwargs)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/utils.py", line 66, in render_field
     return field.render(form, form_style, context, template_pack=template_pack)
   File "/opt/venv/lib/python3.9/site-packages/crispy_forms/layout.py", line 413, in render
     return Template(str(self.html)).render(context)
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 155, in __init__
     self.nodelist = self.compile_nodelist()
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 193, in compile_nodelist
     return parser.parse()
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 449, in parse
     raise self.error(token, e)
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 447, in parse
     filter_expression = self.compile_filter(token.contents)
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 563, in compile_filter
     return FilterExpression(token, self)
   File "/opt/venv/lib/python3.9/site-packages/django/template/base.py", line 662, in __init__
     raise TemplateSyntaxError("Could not parse the remainder: '%s' "
 django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '('image.jpg')' from 'static('image.jpg')'

Thanks so much!

@smithdc1
Copy link
Member

As I understand it, crispy-forms is all based upon DTL, and it would be quite a large job to create Jinja2 versions of these templates as well.

I think the recommendation here would be to create a jinja2 version of the template packs, and that they could sit as their own series of packages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants