Como definir uma variável dentro de loop dentro modelo no Django2.1?

votos
0

I ter um dicionário contexto contendo dados a serem passados para o molde. Eu preciso alternar duas divs com base em alguma variável de sinalizador que tenho implementado usando {% with %}Django tag. No entanto, quando tento definir a variável usando {% set %}sintaxe que estou recebendo seguinte erro: - set', expected 'endwith'. Did you forget to register or load this tag?

I seguinte a solução dada aqui , mas dá-me erro.

index.html

{% with flag=1 %}
                {% for benefit in content.benefits %}
                    <div style=background-color: #fff; class=row mt-5>
                        {% if not flag %}
                            <div class=col-lg-4 col-md-4 col-sm-12>
                                <img src={% static {{benefit.image}} %} alt=tablet
                                     class=img-responsive mx-auto mt-5 w-100 h-75 h-md-50 working-img>
                            </div>
                        {% endif %}
                        <div class=col-lg-8 col-md-8 col-sm-12 h-100>
                            {% for desc in benefit.heading %}
                                <div class=d-flex h-25 w-100 m-1 mt-4>
                                    <div class=col-3 col-sm-2 h-100>
                                        <div class=mx-auto>
                                            <i class=fas fa-check fa-2x style=color: #6fe33d></i>
                                        </div>
                                    </div>
                                    <div class=col-9 col-sm-10>
                                        <div class=d-flex flex-column>
                                            <div class=working-caption font-weight-bold>{{ desc }}</div>
                                            {#                                            <div class=py-2 working-description-courses text-muted>{{ description }}</div>#}
                                        </div>
                                    </div>
                                </div>
                            {% endfor %}
                        </div>
                        {% if flag %}
                            <div class=col-lg-4 col-md-4 col-sm-12>
                                <img src={% static {{benefit.image}} %} alt=tablet
                                     class=img-responsive mx-auto mt-5 w-100 h-75 h-md-50 working-img>
                            </div>
                        {% endif %}
                    </div>
                {% endfor %}
                {% set flag=1-flag %}
            {% endwith %}

settings.py

...
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'environment': 'myapp.jinja2.environment'
        },
    },
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
...
Publicado 10/10/2019 em 01:00
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

O comando que você está tentando usar, setsó está disponível com o motor modelo Jinja2, não o motor de templates do Django.

https://jinja.palletsprojects.com/en/2.10.x/templates/#assignments

Desde que você está usando a APP_DIRSconvenção em ambos os motores de modelo Jinja2 e Django em suas configurações, você precisa colocar quaisquer modelos Jinja2 em courses/jinja2/courses/index.htmlvez de courses/template/courses/index.html. Veja aqui para mais detalhes:

https://docs.djangoproject.com/en/2.2/topics/templates/#django.template.backends.jinja2.Jinja2

Boa sorte!

Respondeu 10/10/2019 em 17:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more