Search code examples
djangojinja2weasyprint

TemplateSyntaxError: expected token '=', got '['


This is my source code (sorry for sending almost everything, i rly idk where's the error):

<p class="font-bold">Apresentar a avaliação detalhada processo de negócio, trazendo todos os questionários,
suas perguntas e respostas.</p>

{% for item in data['quiz'] %}
    {% if forloop.first or item['Questionario__QuestionarioDescricao'] != previous_questionario %}
        {% if not forloop.first %}
            </div>
        {% endif %}
        <h3 class="quiz-title">Questionário: {{ item['Questionario__QuestionarioDescricao'] }}</h3>
    {% endif %}

    <p class="font-bold">Pergunta: {{ item['QuestionarioItem__QuestionarioItemDescricao'] }}</p>
    <p>Resposta: {{ item['QuestionarioRespostaTexto'] }} </p>
    {% if item['QuestionarioRespostaSimNao'] == "S" %}
        <p>Resposta (Sim/Não): Sim</p>
    {% elif item['QuestionarioRespostaSimNao'] == "N" %}
        <p>Resposta (Sim/Não): Não</p>
    {% else %}
        <p>Resposta (Sim/Não): {{ item['QuestionarioRespostaSimNao'] }}</p> <!-- Caso não seja S ou N -->
    {% endif %}

    {% with item['Questionario__QuestionarioDescricao'] as previous_questionario %}
        <!-- Isso vai ajudar a saber se a próxima iteração é de um novo questionário -->
    {% endwith %}
{% endfor %}

the error occurs in this section code:

try:
    jinja_template = Template(template)
    rendered_html = jinja_template.render(
        data=data, generation_date=datetime.now().strftime('%d/%m/%Y')
    )
except TemplateError as te:
    print(f"Erro ao processar o template Jinja2: {te}")
    return

the error:

Erro ao processar o template Jinja2: expected token '=', got '['

I'm trying to generate a pdf report using the weasyprint lib from an html template.


Solution

  • Jinja2 doesn't support the with ... as ... syntax. Replace

    {% with item['Questionario__QuestionarioDescricao'] as previous_questionario %}
    

    with

    {% with previous_questionario = item['Questionario__QuestionarioDescricao'] %}