You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: cs/django_models/README.md
+26-26Lines changed: 26 additions & 26 deletions
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,16 @@
1
1
# Django modely
2
2
3
-
Nyní chceme vytvořit něco, co bude ukládat všechny příspěvky na našem blogu. Ale abychom to mohli udělat, musíme si nejdříve říct něco o `objektech`.
3
+
Nyní chceme vytvořit něco, co bude ukládat všechny příspěvky na náš blog. Ale abychom to mohly udělat, musíme si nejdříve říct něco o `objektech`.
4
4
5
5
## Objekty
6
6
7
7
V programování se používá koncept zvaný `objektově orientované programování`. Tato myšlenka předpokládá, že místo psaní všeho jako nudný sled programovacích instrukcí můžeme modelovat věci a definovat, jak komunikují mezi sebou navzájem.
8
8
9
9
Co tedy je objekt? Je to kolekce vlastností a činností. Zní to divně, ale dáme ti příklad.
10
10
11
-
Pokud chceme modelovat kočku vytvoříme objekt `kočka`, který má nějaké vlastnosti, například `barva`, `věk`, `nálada` (ta je dobrá, špatná, ospalá ;)), `vlastník` (který je objektem `osoba` nebo je možný případ zatoulané kočky, kde bude tato vlastnost prázdná).
11
+
Pokud chceme modelovat kočku, vytvoříme objekt `kočka`, který má nějaké vlastnosti, například `barva`, `věk`, `nálada` (ta je dobrá, špatná, ospalá ;)), `vlastník` (který je objektem `osoba` nebo je možný případ zatoulané kočky, kde bude tato vlastnost prázdná).
12
12
13
-
`Kočka` má také některé akce: `předení`, `škrábání` nebo `krmení` (v němž dáváme kočce nějaké `kočičí jídlo`, které by mohlo být samostatný objekt s vlastnostmi, například `chuť`).
13
+
`Kočka` má také některé akce: `předení`, `škrábání` nebo `žraní` (v němž dáváme kočce nějaké `kočičí granule`, které by mohlo být samostatný objekt s vlastnostmi, například `chuť`).
14
14
15
15
```
16
16
Cat
@@ -31,7 +31,7 @@ Pokud chceme modelovat kočku vytvoříme objekt `kočka`, který má nějaké v
31
31
32
32
Základní představa je popsat skutečné věci v kódu vlastnostmi (nazývané `vlastnosti objektu/object properties`) a akcemi (nazývané `metody/methods`).
33
33
34
-
Jak tedy bude vypadat model blogu? Chceme vytvořit blog, ne?
34
+
Jak tedy bude vypadat model blogu?
35
35
36
36
Musíme odpovědět na otázku: Co je blog post/příspěvek? Jaké by měl mít vlastnosti?
37
37
@@ -47,29 +47,29 @@ Určitě budeme v naše blogu potřebovat nějaký text s jeho obsahem a titulke
47
47
published_date
48
48
```
49
49
50
-
Jaký druh věcí můžeme s příspěvkem dělat? Bylo by hezké mít nějakou `metodu`, která publikuje příspěvek, že ano?
50
+
Jaký druh věcí můžeme s příspěvkem dělat? Bylo by hezké mít nějakou `metodu`, která publikuje příspěvek.
51
51
52
52
Takže budeme potřebovat metodu `publish`.
53
53
54
-
Vzhledem k tomu, že už víme, co chceme dosáhnout, můžeme začít modelování v Django!
54
+
Vzhledem k tomu, že už víme, čeho chceme dosáhnout, můžeme začít modelování v Djangu!
55
55
56
56
## Django model
57
57
58
-
Nyní víme jaký objekt chceme vytvořit, tak můžeme přistoupit k tvorbě Django modelu pro náš příspěvek v blogu.
58
+
Nyní víme, jaký objekt chceme vytvořit, takže můžeme přistoupit k tvorbě Django modelu pro náš příspěvek v blogu.
59
59
60
-
Model v Django je zvláštní druh objektu - který je uložen v `databázi`. Databáze je soubor dat. Je to místo, ve kterém budeš ukládat informace o uživatelích a tvých příspěvcích v blogu, atd. Budeme používat SQLite databázi k ukládání dat. To je výchozí databázový adaptér v Djangu – to nám bude nyní stačit.
60
+
Model v Django je zvláštní druh objektu - který je uložen v `databázi`. Databáze je soubor dat. Je to místo, kam budeš ukládat informace o uživatelích a tvých příspěvcích v blogu, atd. Budeme používat SQLite databázi k ukládání dat. To je výchozí databázový adaptér v Djangu – to nám bude nyní stačit.
61
61
62
62
Model v databázi si lze představit jako tabulku s řádky (data) a sloupci (údaje).
63
63
64
64
### Vytvoření aplikace
65
65
66
-
Abychom udrželi pořádek, vytvoříme si samostatnou aplikaci uvnitř našeho projektu. Je velmi příjemné mít všechno zorganizované od samého začátku. Chceš-li vytvořit novou aplikaci, je třeba spustit následující příkaz v konzoli (z `djangogirls` adresáře, kde je `manage.py` soubor):
66
+
Abychom udržely pořádek, vytvoříme si samostatnou aplikaci uvnitř našeho projektu. Je velmi příjemné mít všechno zorganizované od samého začátku. Chceš-li vytvořit novou aplikaci, je třeba spustit následující příkaz v konzoli (z `djangogirls` adresáře, kde je `manage.py` soubor):
67
67
68
68
```
69
69
(myvenv) ~/djangogirls$ python manage.py startapp blog
70
70
```
71
71
72
-
Zjistíš, že nový adresář `blog` nyní obsahuje řadu souborů. Adresáře a soubory v našem projektu by měl vypadat následovně:
72
+
Zjistíš, že nový adresář `blog` nyní obsahuje řadu souborů. Adresáře a soubory v našem projektu by měly vypadat následovně:
73
73
74
74
```
75
75
djangogirls
@@ -89,7 +89,7 @@ Zjistíš, že nový adresář `blog` nyní obsahuje řadu souborů. Adresáře
89
89
└── views.py
90
90
```
91
91
92
-
Po vytvoření aplikace musíš také Djangu říct, že by jí měl použít. Uděláme to v souboru `mysite/settings.py`. Musíme najít `INSTALLED_APPS` a přidat řádek, který bude obsahovat `"blog",``)`. Takže konečná konfigurace by měla vypadat takto:
92
+
Po vytvoření aplikace musíš také Djangu říct, že by ji měl použít. Uděláme to v souboru `mysite/settings.py`. Musíme najít `INSTALLED_APPS` a přidat řádek, který bude obsahovat `"blog",``)`. Takže konečná konfigurace by měla vypadat takto:
93
93
94
94
```python
95
95
INSTALLED_APPS= (
@@ -107,7 +107,7 @@ Po vytvoření aplikace musíš také Djangu říct, že by jí měl použít. U
107
107
108
108
V souboru `blog/models.py` budeme definovat všechny objekty nazývané `modely` - na tomto místě budeme definovat náš blog post.
109
109
110
-
Otevři `blog/models.py`, odstraň vše co v něm je a vlož následující kód:
110
+
Otevři `blog/models.py`, odstraň vše, co v něm je, a vlož následující kód:
111
111
112
112
```python
113
113
from django.db import models
@@ -131,36 +131,36 @@ Otevři `blog/models.py`, odstraň vše co v něm je a vlož následující kód
131
131
returnself.title
132
132
```
133
133
134
-
> Dvakrát si zkontroluj, že jsi použila dva znaky podtržítko(`_`) na každé straně `str`. Tato konvence se v Pythonu používá často. Někdy je také nazýváme "dunder" (zktratka pro "Double-UNDERscore").
134
+
> Dvakrát si zkontroluj, že jsi použila dva znaky podtržítko(`_`) na každé straně `str`. Tato konvence se v Pythonu používá často. Někdy je také nazýváme "dunder" (zkratka pro "Double-UNDERscore").
135
135
136
-
Vypadá to děsivě, že? Ale žádný strach vysvětlíme, co tyto řádky znamenají!
136
+
Vypadá to děsivě, že? Ale žádný strach, vysvětlíme ti, co tyto řádky znamenají!
137
137
138
138
Všechny řádky začínající `from` nebo `import` jsou řádky, které přidávají některé kousky z jiných souborů. Takže namísto kopírování a vkládání stejných věcí v každém souboru, můžeš zahrnout některé části s `from... import...`.
139
139
140
-
`class Post(models.Model):`-Tento řádek definuje náš model (Jedná se o `objekt`).
140
+
`class Post(models.Model):` - Tento řádek definuje náš model (Jedná se o `objekt`).
141
141
142
142
*`class` je speciální klíčové slovo, které říká, že definujeme objekt.
143
-
*`Post` je jméno našeho modelu, můžeme mu dát jiné jméno (ale musíme se vyvarovat speciálních znaků a bílých míst). Název třídy vždy začínej velkým písmenem.
143
+
*`Post` je jméno našeho modelu, můžeme mu dát jiné jméno (ale musíme se vyvarovat speciálních znaků a bílých znaků). Název třídy vždy začínej velkým písmenem.
144
144
*`models. Model` znamená, že Post je Django Model, takže Django ví, že by to mělo být uloženo v databázi.
145
145
146
-
Nyní definujeme vlastnosti, mluvili jsme o: `title`, `text`, `created_date`, `published_date` a `autor`. To uděláš tak, že definuješ typ každého pole (Je to text? Číslo? Datum? Vztah k jinému objektu, například uživateli?).
146
+
Nyní definujeme vlastnosti, mluvily jsme o: `title`, `text`, `created_date`, `published_date` a `autor`. To uděláš tak, že definuješ typ každého pole (Je to text? Číslo? Datum? Vztah k jinému objektu, například uživateli?).
147
147
148
-
*`models. CharField`-takto definuješ text s omezeným počtem znaků.
149
-
*`models. TextField`-toto použiješ na dlouhý text bez omezení. To zní ideálně pro obsah blog post, ne?
150
-
*`models. DateTimeField`-definuje datum a čas.
151
-
*`models. ForeignKey`-definuje odkaz do jiného modelu.
148
+
*`models. CharField` - takto definuješ text s omezeným počtem znaků.
149
+
*`models. TextField` - toto použiješ na dlouhý text bez omezení. To zní ideálně pro obsah blog post, ne?
150
+
*`models. DateTimeField` - definuje datum a čas.
151
+
*`models. ForeignKey` - definuje odkaz do jiného modelu.
152
152
153
153
Nebudeme vysvětlovat každý kousek kódu, vzhledem k tomu, že by trvalo příliš dlouho. Měla bys se podívat do Django dokumentace, pokud se chceš dozvědět víc o polích modelu a jak definovat jiné věci než výše uvedené (https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types).
154
154
155
-
Co je `def publish(self):`? Je to `publish` metoda, o které jsme mluvili dříve. `def` znamená, že definuješ funkci/metodu, a `publish` je název metody. Název metody můžeš změnit, pokud chceš. Pravidlo pro pojmenovávání je, že používáme malá písmena a podtržítka místo mezer. Například metoda, která vypočítá průměrnou cenu se bude jmenovat `calculate_average_price`.
155
+
Co je `def publish(self):`? Je to `publish` metoda, o které jsme mluvili dříve. `def` znamená, že definuješ funkci/metodu, a `publish` je název metody. Název metody můžeš změnit, pokud chceš. Pravidlo pro pojmenovávání je, že používáme malá písmena a podtržítka místo mezer. Například metoda, která vypočítá průměrnou cenu, se bude jmenovat `calculate_average_price`.
156
156
157
-
Metody často něco `vrací/return`. Zde je příklad metoda `__str__`. V tomto případě když zavoláme metodu `__str__()` dostaneme text (**řetězec/string**) s názvem Postu.
157
+
Metody často něco `vrací/return`. Zde je příklad metoda `__str__`. V tomto případě, když zavoláme metodu `__str__()`, dostaneme text (**řetězec/string**) s názvem Postu.
158
158
159
159
Pokud ti něco stále ještě není jasné o modelech, neváhej se zeptat svého kouče! Víme, že je to složité, zvláště, když se dozvíte, co jsou objekty a funkce takto naráz. Doufejme, že to je nyní pro tebe trochu méně magické!
160
160
161
161
### Vytvoření tabulek pro modely v databázi
162
162
163
-
V posledním kroku přidáš náš nový model do databáze. Nejprve musíme dát Djangu vědět, že mám nějaké změny v modelu (které jsme právě vytvořili!). Napiš `Python manage.py makemigrations blog`. Celý příkaz bude vypadat takto:
163
+
V posledním kroku přidáš náš nový model do databáze. Nejprve musíme dát Djangu vědět, že mám nějaké změny v modelu (které jsme právě vytvořily!). Napiš `Python manage.py makemigrations blog`. Celý příkaz bude vypadat takto:
164
164
165
165
```
166
166
(myvenv) ~/djangogirls$ python manage.py makemigrations blog
@@ -169,7 +169,7 @@ V posledním kroku přidáš náš nový model do databáze. Nejprve musíme dá
169
169
- Create model Post
170
170
```
171
171
172
-
Django pro nás připravil soubor migrace, který budeme muset aplikovat na naší databázi. Napiš `Python manage.py migrate blog` a výstup by měl vypadat takto:
172
+
Django pro nás připravil soubor migrace, který budeme muset aplikovat na naši databázi. Napiš `Python manage.py migrate blog` a výstup by měl vypadat takto:
173
173
174
174
```
175
175
(myvenv) ~/djangogirls$ python manage.py migrate blog
@@ -180,4 +180,4 @@ Django pro nás připravil soubor migrace, který budeme muset aplikovat na naš
180
180
Applying blog.0001_initial... OK
181
181
```
182
182
183
-
Hurá! Náš Post model je nyní v naší databázi! Bylo by hezké vidět ho v akci, že ano? Přeskoč na další kapitolu a koukni jak vypadá tvůj příspěvek!
183
+
Hurá! Náš Post model je nyní v naší databázi! Bylo by hezké vidět ho v akci, že ano? Přeskoč na další kapitolu a podívej se, jak vypadá tvůj příspěvek!
0 commit comments