W moim core.html Mam blok oznaczony javascript. Byłoby wspaniale, gdybym mógł dodać więcej linii do tego bloku bez nadpisywania wszystkiego w nim.Czy możemy dodać do {% bloku%} zamiast nadpisywać?
Odpowiedz
{% block javascript %}
{{ block.super }}
... more content ...
{% endblock %}
Korzystanie block.super
działa poprawnie, gdy rozszerzenie szablonu, ale nie tak dobrze, gdy w tym jeden, czyli:
{% extends "base.html" %} vs. {% include "partial.html" %}
Powiedzmy, że chcesz to szablon w środku twoja strona i chciałbyś dodać trochę javascriptu w bloku na końcu strony: wywołanie block.super
w dołączonym szablonie spowoduje awarię.
Cf. Django wydaje #7324, #12008, #13399 i related update to the documentation. Cf. include tag uwaga:
include tag powinny być uważane za realizację „render to subtemplate i zawierać kod HTML”, a nie jako „przeanalizować ten subtemplate i to jego zawartość tak, jakby były częścią rodzica”. Oznacza to, że nie ma współdzielonego stanu między dołączonymi szablonami - każdy z nich zawiera całkowicie niezależny proces renderowania.
Bloki są oceniane przed ich dołączeniem. Oznacza to, że szablon zawierający bloki od innego zawiera bloki, które zostały już ocenione i renderowane - nie bloki, które można przesłonić, na przykład przez rozszerzający się szablon.
W tym przypadku polecam korzystania django-sekizai, wich pozwalają robić takie rzeczy jak:
{% load sekizai_tags %}
⎧ <p>Some content</p>
<p>Some content</p> | {% addtoblock "js" %}
| <script type="text/javascript">
{% include "partial.html" %} -> ⎨ alert("Hello django-sekizai");
| </script>
<p>Some more content</p> ⎩ {% endaddtoblock %}
{% render_block "js" %}
Głównym powodem zacząłem ten projekt był brak dobrej struktury mediów (css/js) w django i django-cms. Tak, istnieje klasa Media używana w formularzach w django, ale tak naprawdę to nie działa tak dobrze. Zwykle faceci z frontendu chcą zdecydować się na pliki css i javascript, które mają być dołączone i nie chcą edytować plików w Pythonie, aby zmienić, ani nie chcę, aby zmieniły moje pliki Pythona. W związku z tym istnieje potrzeba umożliwienia edycji zawartości szablonów, które są przed lub po punkcie, w którym się znajdujesz. Chciałem też usunąć duplikaty. W rezultacie napisałem django-sekizai, który robi dokładnie to. Jest podobny do bloków, tylko zamiast je dziedziczyć, rozszerzasz je.
- 1. Czy możemy użyć "return" w końcu bloku
- 2. Co możemy użyć zamiast nstimer?
- 3. Jak przekazać funkcję zamiast bloku
- 4. Używanie obiektu bloku zamiast selektora?
- 5. Zamiast rzucania bloku typu błędu wykonanego pomyślnie
- 6. Czy możemy użyć <body> zamiast #container div?
- 7. Dlaczego możemy zdefiniować `# initialize` zamiast` :: new`
- 8. Jak dodać spacje na początku bloku w bloku blockible?
- 9. WPF: Jak dodać znacznik wyboru do bloku tekstu?
- 10. Dodaj, jeśli instrukcja do bloku do końca
- 11. Czy możemy użyć pom.xml do ANT
- 12. C++ fstream zastąpić zamiast dodać
- 13. Czy możemy dodać certyfikat SSL do aplikacji heroku posiadającej rozszerzenie herokuapp.com bez posiadania własnej domeny
- 14. Czy możemy dodać znak powrotu karetki ("\ n") do pliku resx w telefonie z systemem Windows?
- 15. Czy możemy dodać nieparzyste pole do istniejącej klasy przy użyciu javassist?
- 16. Czy możemy dodać komentarze lub plik README do bazy/tabeli SQL Server?
- 17. Czy możemy dodać stany dynamiczne do $ stateprovider z już istniejącymi stanami w ui-routerze? Angular.js
- 18. Czy możesz dodać warunek do deklaracji zmiennej?
- 19. Jak prawidłowo podklasować dyktować i nadpisywać __getitem__ & __setitem__
- 20. jak nadpisywać/używać ciasteczek w scrapy
- 21. Czy możemy przypisać niestandardowe podpowiedzi do zapytań do JPA NamedQueries
- 22. Czy możemy zaszyfrować cały plik konfiguracyjny?
- 23. Zapisywanie wartości w bloku zamiast etykiety słowa, która go reprezentuje
- 24. Dlaczego nie możemy po prostu użyć tablic zamiast varargs?
- 25. Czy możemy usunąć klasę ES6?
- 26. Czy możemy dostosować Facebook Likebox?
- 27. Czy możemy odnieść się do zmiennych członkowskich w specyfikacji noexcept?
- 28. zadeklarować odniesienie do przodu do bloku typedef?
- 29. Jak dodać tekst do pola tekstowego Zamiast go zastępować?
- 30. Czy możemy ustawić czcionkę NSFont lub jej styl czcionki zamiast zmieniać nazwę czcionki?
Działa świetnie, dzięki! :) – PKKid