Professional Documents
Culture Documents
Django Template
Django Template
1. Prikazivanje sadržaja pomoću šablona u Python-u je proces od 3 koraka , prvo imamo Engine
(mašina) tj. sistem koji obavlja proces prikazivanja sadržaja na obrazcu, zatim imamo sam obrazac
tj. Template koji tagujemo željenim pozicijama za varijabe i na kraju imamo Context koji povezuje
varijable sa sadržajem koji se renderuje na obrazacu na odgovarajućem mjestu označenom za
varijablu na Template-u.
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/
Pored DjangoTemplates mi možemo kao BACKEND postaviti i Jinja2 i u tom slučaju moramo
instalirati Jinja2 aplikaciju u svoj projekat.
1
izvor: https://docs.djangoproject.com/en/3.2/topics/templates/#django.template.backends.django.DjangoTemplates
Instanciranje Engine-a
2. Ako smo kao BACKEND u settings-u postavili DjangoTemplates onda se za ovu klasu instancira
Engine kao self.engine kao što vidimo ispod Engine(self.dirs, self.app_dirs, **options), gdje se
izvor: https://docs.djangoproject.com/en/3.2/_modules/django/template/backends/django/#DjangoTemplates
U Django source kodu vidim da je BaseEngine definisan kao u snippet-u ispod
Ove opcije -**options koje prihvata Engine instanciran u DjangoTemplates backend-u se takođe
definišu u settings.py TEMPLATES varijabli.
2
Klasa Engine() koja se instancira u DjangoTemplates je data ispod gdje vidimo da će
DjangoTemplates da postavi odgovarajuće vrijednosti za Engine() i da pregazi ove
podrazumijevane.
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#configuring-an-engine
Ispod vidimo da instanciranje Engin-a direktno mimo backend-a služi da se omogući korištenje
Django template jezika izvan Django projekta, dakle Engine enkapsulira instancu Django template
sistema sa svim potrebnim atributima, metodama i vezama. DjangoTemplates backend je omotač
za django.template.Engine koji ga prilagođava Djangovom template backend API-iju.
izvor: https://docs.djangoproject.com/en/3.2/topics/templates/#engine
U izvornom kodu vidimo kako izgleda Engine klasa, u dokumentaciji se dalje objašnjava kako se ovi
parametri zadaju i šta oni kasnije definišu tj. koja svojstva Engine objekta, kao i metode.
3
izvor: https://docs.djangoproject.com/en/3.2/_modules/django/template/backends/jinja2/#Jinja2
izvor: https://jinja.palletsprojects.com/en/3.1.x/
4. sdfsdf
Template -Korak 2
5. Učitavnje šablona tj. njegovo prosljeđivanje Enginu je najbolje uraditi preko DjangoTemplates
metoda get_template(), select_template() i from_string(). Prva metoda get_template() i treća
metoda from_string() su definisane na DjangoTemplates(BaseEngine) klasi, ali u okviru tih metoda
se pozivaju istoimene metode definisane u Engine klasi, dok je metoda select_template()
definisana isključivo u Engine() klasi, međutim vidimo da ako je backend Engine DjangoTemplate
da možemo da uradimo i direktno instanciranje Templates klase za šta je primjer dat ispod.
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#loading-a-template
6. Primjeri poziva Engine metoda za dohvatanje template-a.
4
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#django.template.Engine.from_string
7. sdf
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#rendering-a-context
9. sdfd
izvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#variables-and-lookups
I
zvor: https://docs.djangoproject.com/en/3.2/ref/templates/api/#variables-and-lookups
12. sdfds
13. Izvori:
https://docs.djangoproject.com/en/3.2/topics/templates/
#django.template.backends.django.DjangoTemplates
6
https://docs.djangoproject.com/en/3.2/ref/templates/api/
https://docs.djangoproject.com/en/3.2/_modules/django/template/backends/django/
#DjangoTemplates
https://docs.djangoproject.com/en/3.2/ref/templates/language/
14.