Jak warunkowo dodać klasę do taga <li>?

0

Kod z ksiażki "Django 4 by example" https://github.com/PacktPublishing/Django-4-by-example/blob/main/Chapter04/bookmarks/account/templates/base.html

<li {% if section == "dashboard" %}class="selected"{% endif %}>
  <a href="{% url "dashboard" %}">My dashboard</a>
</li>

Problem z zastosowaniem {% if condition %} wewnatrz tagu <li>, dostaję błąd:

TemplateSyntaxError at /account/
Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'
Request Method:	GET
Request URL:	http://127.0.0.1:8000/account/
Django Version:	4.2.1
Exception Type:	TemplateSyntaxError
Exception Value:	
Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'

Problem z VS Code?

1
Jan Osienjed napisał(a):

Problem z VS Code?

Na pewno nie.

Jan Osienjed napisał(a):
<li {% if section == "dashboard" %}class="selected"{% endif %}>
  <a href="{% url "dashboard" %}">My dashboard</a>
</li>

Problem z zastosowaniem {% if condition %} wewnatrz tagu <li>, dostaję błąd:

TemplateSyntaxError at /account/
Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'
Request Method:	GET
Request URL:	http://127.0.0.1:8000/account/
Django Version:	4.2.1
Exception Type:	TemplateSyntaxError
Exception Value:	
Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'

No przecież masz napisane: "problem ze składnią szablonu". Albo użyłeś niepoprawnego znaku, albo źle przepisałeś, albo używasz innej wersji szablonów niż ta w tutorialu.

0

Wewnątrz tagu vsc inaczej koloruje (nie wyróżnia innym kolorem) {% condition %}, błędów w kodzie nie ma na 100%, sprawdzałem kilka razy, kopiowałem z repo, dalej to samo, instalowałem biblioteki z req.txt

1

Błąd dotyczy trochę innej wersji kodu, niż w snippecie wyżej.
Bo wyżej masz spację:

section == "dashboard"

w błędzie masz bez spacji przed i po ==

Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'

Może tutaj jest problem, że bez spacji nie łapie i mu się "skleja"?
Ale tak tylko zgaduję.

0
LukeJL napisał(a):

Błąd dotyczy trochę innej wersji kodu, niż w snippecie wyżej.
Bo wyżej masz spację:

section == "dashboard"

w błędzie masz bez spacji przed i po ==

Could not parse the remainder: '=="dashboard"' from 'section=="dashboard"'

Może tutaj jest problem, że bez spacji nie łapie i mu się "skleja"?
Ale tak tylko zgaduję.

"skleja" się podczas formatowania przy zapisie. IMO problem jest wcześniej, inaczej koloruje {% if condition %} na zewnątrz niż wewnątrz tagu.

2

Spróbuj zrobić

<li class="{% if section == "dashboard" %}selected{% endif %}">
  <a href="{% url "dashboard" %}">My dashboard</a>
</li>
0
Riddle napisał(a):

Spróbuj zrobić

<li class="{% if section == "dashboard" %}selected{% endif %}">
  <a href="{% url "dashboard" %}">My dashboard</a>
</li>
<li class="{% if section == 'dashboard' %}selected{% endif %}">
  <a href="{% url 'dashboard' %}">My dashboard</a>
</li>

Działa! Podziękował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1