Templates
Prvé sedenie o Templates. Súbor 01_templates.py obsahuje pythonovské príkazy určené na copy/paste do interpretra spusteného príkazom
python manage.py shell
v adresári existujúceho djangovského projektu.
Relevantné časti dokumentácie sú
1 gejza@debian:~/django/minidata$ python manage.py shell
2 Python 2.5.2 (r252:60911, Sep 29 2008, 21:15:13)
3 [GCC 4.3.2] on linux2
4 Type "help", "copyright", "credits" or "license" for more information.
5 (InteractiveConsole)
6 >>> # Prve interaktivne sedenie: Django Templates
7 >>> #
8 >>> # Pouzitie: V existujucom django projekte
9 >>> # treba spustit "manage.py shell".
10 >>> # To zabezpeci natiahnutie patricnych modulov.
11 >>> #
12 >>> # =====================================================
13 >>> # Najprv import:
14 >>> from django.template import Template,Context
15 >>> # Vytvorime nasu prvu Template
16 >>> t=Template('{{pozdrav}}, {{koho}}')
17 >>> print t
18 <django.template.Template object at 0x84b606c>
19 >>> # Context sa vytvara zo slovnika:
20 >>> c1=Context({'pozdrav':'ahoj','koho':'svet'})
21 >>> print c1
22 [{'koho': 'svet', 'pozdrav': 'ahoj'}]
23 >>> # A mozeme dosadit
24 >>> print t.render(c1)
25 ahoj, svet
26 >>> # Template sa da znovupouzit v inom kontexte
27 >>> # pri zmene Contextu ju teda netreba vytvarat znovu
28 >>> c2=Context({'pozdrav':'ahoj','koho':'slnko'})
29 >>> print t.render(c2)
30 ahoj, slnko
31 >>> # Context nie je slovnikom, ale umoznuje slovnikove
32 >>> # operacie:
33 >>> c2['pozdrav']='dovi'
34 >>> print t.render(c2)
35 dovi, slnko
36 >>> # Hodnota v slovniku nemusi byt retazec, ale aj napr.
37 >>> # cislo:
38 >>> c2['koho']=3.14
39 >>> print c2
40 [{'koho': 3.1400000000000001, 'pozdrav': 'dovi'}]
41 >>> print t.render(c2)
42 dovi, 3.14
43 >>> # Nielen cislo, ale lubovolny objekt
44 >>> # Definujme nejaku triedu
45 >>> class Vec(object):
46 ... def __init__(self,meno):
47 ... self.meno=meno
48 ... def __str__(self):
49 ... # Prvy znak velkym pismenom
50 ... return self.meno[0].upper()+self.meno[1:]
51 ...
52 >>> # Vytvorme instanciu
53 >>> mes=Vec('mesiacik')
54 >>> # print vola __str__:
55 >>> print mes
56 Mesiacik
57 >>> # Vytvorme kontext, ktory obsahuje objekt triedy Vec
58 >>> c3=Context({'pozdrav':'dobry vecer','koho':mes})
59 >>> # a mozeme renderovat
60 >>> print t.render(c3)
61 dobry vecer, Mesiacik