-
Notifications
You must be signed in to change notification settings - Fork 2
/
poznamky.txt
154 lines (115 loc) · 7.29 KB
/
poznamky.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Tady zkusím psát všechny jednotlivé kroky co se na todo_list udělají
- virtualni prostredi "mkvirtualenv todo_list"
- instalace Django do toho prostředí
- vytvoření requirements.txt (echo "Django~=4.0.4 > requirements.txt" #vytvoří soubor requirements.txt a uloží do něj závislost Django
- vytvorit projekt "django-admin startproject todo_list"
- migrace internich Django modelů "python manage.py migrate"
- vytvoreni appky python "manage.py startapp base"
- v settings.py pridat nazev appky do INSTALLED_APPS
- pridani urls.py do slozky base
- do base/urls.py pridano:
from django.urls import path
from nazev_appky import views
urlpatterns = []
# sem pak prijdou vsechny url
- vytvoreni slozky templates a v ní slozku base a v ní homepage.html #sem prijdou vsechny html sablony
- v todo_list/urls.py pridano:
path("", include("base.urls"))
> Až sem bylo vše uděláno podle návodu co sepsal Václav
> Teď jsem to mrskl na github
- vytvoreni superusera pro pristup do 127.0.0.1:8000/admin. "python manage.py createsuperuser"
- tvorba modelu Task v models.py #základ appky, z tohoto se berou data pro views
- registrace modelu Task v admin.py #aby jsme mohly v 127.0.0.1:8000/admin zkouknout jak vypadá náš model Task a můžeme přidat na zkoušku nějaké ukoly
- ve views.py vytvořen TaskListView pro zobrazovani vytvorenych ukolu pomoci nejake sablony
- base/urls.py > pridáno nase nove >view< a >name< pro odkazy na tuto stranku: path("", TaskListView.as_view(), name="tasks"),
- vytvoreni base.html jako základu pro ostatní podstránky. tady bude hlavička se všemi "must have" html věcmi
- v homepage.html uprava na {% extends %}, odteď všechny html "rozšiřují" základní base.html
* Pridany novy field "dead_line" do DB -> dead_line = models.DateField()
- je treba to té databázi říct tím, že v terminálu zadám migrace - "python manage.py makemigrations"
- je treba urcit default hodnotu pro DateField, zvolim 1 + Enter
- zadam "timezone.now" a vytvori mi to migraci
- nyni provedu samotnou migraci - "python manage.py migrate"
* Pridani nove stranky "Categories":
- v models.py vytvorene CATEGORY_CHOICES s pridano pole -> category = models.CharField(choices=CATEGORY_CHOICES, default="other", max_length=21)
- ve views.py vytvorena trida Seznam kategorií-> class CategoryListView(ListView)
- vytvoren soubor "categories.html"
- do base\urls.py pridana cesta -> path("categories/", CategoryListView.as_view(), name="categories")
- do task_create.html vlozen odkaz url -> <a href="{% url 'categories' %}">Categories</a>
* Aktualizace pole dead_line z "timezone.now" na "one_week_later"
- do models.py pridana funkce "def one_week_later()"
- upravena hodnota default pole dead_line
* Zmena formy v task_create.html
-> "<table>{{ form.as_table }}</table>"
- vytvořeno view TaskDone pro funkci zaškrtnutí ukolu jako hotovy (doplněno v urls.py, task_create.html)
- vytvořen soubor base.css ve složce static/css/
- import a pridani urlpatterns do urls.py
- v settings.py pridany cesty ke statics files
- do base.html pridan {% load static %} a link.... pro načtení css
- proveden prikaz "python manage.py collectstatic"
- změny v css, aby bylo tlacitko na stejnem radku jako ukol
- ve views pridano do all_tasks .orderby >"completed"< aby se odskrtnute ukoly radily dolu
* Pridano number_of_tasks do views.py
-> 'number_of_tasks': Task.objects.all().count()
a do categories.html
-> <h3>CATEGORIES - Total tasks ({{ number_of_tasks }})</h3>
* Pridano pole "detail" pro ukoly
- v models.py pridano pole "description"
- ve views.py vytvorena nova trida "TaskDetailView"
- vytvoren "task_detail.html"
- do base\urls.py doplnena cesta
- v categories.html doplneny cesty
* V models.py pridano pole "to_do" s defaultni hodnotou=tomorrow
- vytvorena funkce "def tomorrow()"
- ve views.py doplneno pole "to_do" do "fields" v TaskCreateView
- doplneno take do "task_create.html" a do "task_detail.html"
* upraven format datetime u "to_do" a "dead_line" z US formatu na citelnejsi
* upravena stranka "task_detail.html" a doplneny zpetne prokliky na Homepage a Categories
- vytvoreni prihlasovaciho okna (novy uzivatele se daji zatim pridavat pouze v /admin - registraci dodelam pozdeji)
- zatim se jde jen prihlasit/odhlasit bez prirazeni ukolu, takze ukoly se zobrazuji porad stejne-
-doplnim potom, chtel jsem provest push po mensich zmenach
- pridano slovo "body" do endblocku v base.html
- pridan pozdrav na uvodni strance
- vytvoreni TaskLoginView
- vytvoreni login.html
- pridani odkazu do tesk_create.html
- dva nove linky v urls (Logout se dá použít rovnou v urls.py :)
- vymazáno "dead_line", "priority" z TaskCreateView (položka "all_tasks") protože to radilo ukoly obracene
7.6.2022
-v models.py změna typů polí, to_do a dead_line (když tam budeme chtít i čas, budeme muset vytvořit nové pole pro čas,
např. to_do_time a dead_line_time. Neuměl jsem to vměstnat do jednoho formu. Ale to už půjde myslím si dodělat snadno)
-ve views se vyplňování dat přesunulo do TaskForms, takže jen přesměrování "form_class = TaskForm"
- forms.py. No co k tomu říct. Okopírováno z hollymovies a stackoverflow + přesunuty Edovi funkce z models.py
v TaskForm se vlastně jen přepíšou pole které chceme jinak (to_do, dead_line) a místo "default" se tu používá "initial"!!
to byl docela chyták
Pak ve třídy Meta se dají excludnout věci co nechceme vyplňovat, nebo naopak tam dáme jen věci co chceme (fields = "to_do", "name"...)
7.6.2022 2.část
- aby se nepřihlášenéému uživateli nezobrazil obsah, stačí importovat LoginRequiredMixin a přidat je k dědění do views
které chceme nepřihlášeným zablokovat
- když někdo nepřihlášený příjde na stránku používající "loginrequiredmixin" můžeme v settings.py nastavit
LOGIN_URL = "login", k přesměrování na přihlašovací formulář. Jinak django zahlásí prosté "page not found error 404"
- takže "loginrequiremixin" přidáno do všech views
8.6.2022
- Spraven výpis úkolů (přiřazování id uživatele k právě vytvořenému úkolu) Chybělo:
ve views do TaskCreateView přidat funkci def form_valid
- Musí se to tam přidat protože data předává form(TaskForm) a ne přímo view(TaskCreateView)
- teď se přiřazují jednotlivé úkoly právě přihlášenému uživateli
9.6.2022
- jméno úkolu je teď "link" na detail úkolu
- po kliknutí na něj se nezmění barva odkazu (class="nodiffcolor")
* Uprava admin site:
-> pip install django-jazzmin
- v settings.py INSTALLED_APPS pridana aplikace "jazzmin"
* Pridany Timepicker do homepage a detailu
- v models.py vytvorena dve nova pole to_do_time a dead_line_time
- ve forms.py vytvorena class CustomTimeInput a definovana pole v class TaskForm
- v task_detail.html uprava data a casu
- v task_create.html uprava data a casu
* Pridany user do base.html -> To do list - {{ user }}
* Pridan detail kategorie s vypisy ukolu
- ve views.py pridana class ListByCategories
- vytvoren list_by_categories.html
- cesta v urls.py
* Vytvoreny prokliky na detail kazde kategorie v categories.html
- pridana cesta v urls.py
* Doplneny contexty na BTC_price ve views.py
* Pridana class Meta - ordering v models.py (migrace)