Django własne znaczniki szablonów

0

Cześć, przerabiam temat tworzenia własnych znaczników szablonu w Django i mam taki mały problem.
Utworzyłem znacznik, który zlicza liczbę postów na blogu

@register.simple_tag
def total_posts():
	return Post.published.count()

A następnie wykorzystuje go w szablonie strony, na której jest wyświetlana. Problem pewnie jest dość śmieszny ale nie mogę sobie poradzić. Po wyświetleniu liczby postów chciałem dodać If'a dla wyświetlania słowa w zależności od liczby postów
x =1 - post

1 x <5 - posty
x>5 - postów.
Ale niestety nie uzyskuję żądanych efektów. Kod w html wygląda tak:

<p>Dotychczas opublikowałem {% total_posts %} 
{% if total_posts ==  1 %}
  post.
{% endif %}
{% if total_posts >  1 and total posts < 5  %}
  posty.
{% endif %}
{% if total_posts >=  5 %}
  postów.
{% endif %}
</p>

Czy moglibyście mi coś podpowiedzieć ?

1

Po pierwsze: Musisz zaimportować tag.py czy jakkolwiek nazywa się moduł z zaimportowanymi i zarejestrowanymi tagami -> {% load tag %}

Po drugie stosujesz zły syntax. Spróbuj tak:

<p>
  <span>Dotychczas opublikowałem {{ total_posts }}</span> 
  {% if total_posts ==  1 %}
    <span>post.</span>
  {% elif total_posts >  1 and total posts < 5  %}
    <span>posty.</span>
  {% elif total_posts >=  5 %}
    <span>postów.</span>
  {% endif %}
</p>
0

@ledi12: wyrzuca mi błąd

Unused 'posts' at end of if expression.

Ok w 5 linii kodu brakuje podkreślenia w total_posts
Strona się załadowała ale po "Dotychczas opublikowałem" już nic nie wyświetla. W poprzedniej wersji kodu pokazywało mi przynajmniej liczbę postów.

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