Jak ustawić zmienną wewnątrz pętli wewnątrz szablonu w Django2.1?

głosy
0

Mam słownik kontekst zawierający dane mają być przekazane do szablonu. Muszę przełączać dwa DIV oparte na jakiejś zmiennej flag które wdrożyły użyciu {% with %}Django szablon tag. Jednak, gdy próbuję ustawić zmienną używając {% set %}składni otrzymuję następujący błąd: - set', expected 'endwith'. Did you forget to register or load this tag?

Mam następujące rozwiązanie podane tutaj , ale to daje mi błąd.

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',
            ],
        },
    },
]
...
Utwórz 10/10/2019 o 01:00
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Polecenie próbujesz użyć, setjest dostępny tylko z silnikiem, nie Jinja2 szablonu szablon silnika Django.

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

Ponieważ używasz APP_DIRSkonwencję w obu Jinja2 i silników szablonów Django w ustawieniach, należy umieszczać żadnych szablonów Jinja2 w courses/jinja2/courses/index.htmlzamiast courses/template/courses/index.html. Zobacz tutaj po więcej szczegółów:

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

Powodzenia!

Odpowiedział 10/10/2019 o 17:24
źródło użytkownik

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