Come impostare una variabile all'interno per il ciclo all'interno modello in Django2.1?

voti
0

Ho un dizionario contesto contenente i dati da trasmettere nel modello. Ho bisogno di alternare due div sulla base di alcune variabili bandiera che ho implementato utilizzando {% with %}tag modello di Django. Tuttavia, quando si tenta di impostare la variabile utilizzando {% set %}la sintassi sto ottenendo seguente errore: - set', expected 'endwith'. Did you forget to register or load this tag?

Ho seguito la soluzione data qui ma mi dà errore.

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',
            ],
        },
    },
]
...
È pubblicato 10/10/2019 alle 01:00
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Il comando che si sta tentando di utilizzare, setè disponibile solo con il motore di template Jinja2, non motore di template di Django.

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

Dal momento che si sta utilizzando la APP_DIRSconvenzione in entrambi i motori dei modelli Jinja2 e Django nelle impostazioni, è necessario mettere tutti i modelli Jinja2 nel courses/jinja2/courses/index.htmlposto di courses/template/courses/index.html. Vedi qui per maggiori dettagli:

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

In bocca al lupo!

Risposto il 10/10/2019 a 17:24
fonte dall'utente

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