From b2dc31c2178c609a80697d3a06f12b726e4b0087 Mon Sep 17 00:00:00 2001 From: Tomasz Magulski Date: Mon, 28 May 2018 12:09:45 +0200 Subject: [PATCH] Polish translation reviewed (in major part done by @w1stler) --- LANGS.md | 2 +- pl/GLOSSARY.md | 4 +-- pl/README.md | 6 ++-- pl/SUMMARY.md | 6 ++-- pl/deploy/README.md | 36 ++++++++++---------- pl/django/README.md | 8 ++--- pl/django_admin/README.md | 6 ++-- pl/django_forms/README.md | 18 +++++----- pl/django_installation/README.md | 4 +-- pl/django_installation/instructions.md | 2 +- pl/django_models/README.md | 6 ++-- pl/django_orm/README.md | 2 +- pl/django_start_project/README.md | 16 ++++----- pl/django_templates/README.md | 2 +- pl/django_urls/README.md | 12 +++---- pl/django_views/README.md | 4 +-- pl/dynamic_data_in_templates/README.md | 4 +-- pl/extend_your_application/README.md | 14 ++++---- pl/how_the_internet_works/README.md | 14 ++++---- pl/html/README.md | 16 ++++----- pl/intro_to_command_line/README.md | 8 ++--- pl/python_installation/instructions.md | 8 ++--- pl/python_introduction/README.md | 46 +++++++++++++------------- pl/template_extending/README.md | 4 +-- pl/whats_next/README.md | 2 +- 25 files changed, 125 insertions(+), 125 deletions(-) diff --git a/LANGS.md b/LANGS.md index 4143c60219b..708556964b7 100644 --- a/LANGS.md +++ b/LANGS.md @@ -6,7 +6,7 @@ * [🇭🇺 Magyar (beta)](hu/) * [🇮🇹 Italiano (beta)](it/) * [🇰🇵/🇰🇷 한국어 (beta)](ko/) -* [🇵🇱 Polski (beta)](pl/) +* [🇵🇱 Polski](pl/) * [🇵🇹 Português-brasileiro (beta)](pt/) * [🇹🇷 Türkçe (beta)](tr/) * [🇷🇺 Русский (beta)](ru/) diff --git a/pl/GLOSSARY.md b/pl/GLOSSARY.md index 303cd4344e1..6c00cc9d71c 100755 --- a/pl/GLOSSARY.md +++ b/pl/GLOSSARY.md @@ -1,3 +1,3 @@ -# edytor kodu +# Edytor kodu -Edytor kodu to taka aplikacja, która pozwala Ci zapisać kod, byś mogła do niego wrócić w dowolnym późniejszym momencie. Możesz się dowiedzieć skąd go ściągnąć z [rozdziału o edytorach kodu](./code_editor/README.md). \ No newline at end of file +Edytor kodu to taka aplikacja, która pozwala Ci zapisać kod, byś mogła do niego wrócić w dowolnym, późniejszym momencie. Możesz się dowiedzieć skąd go ściągnąć z [rozdziału o edytorach kodu](./code_editor/README.md). \ No newline at end of file diff --git a/pl/README.md b/pl/README.md index 397db09cff1..01cdc513fbb 100755 --- a/pl/README.md +++ b/pl/README.md @@ -6,9 +6,9 @@ ## Witaj -Witaj w tutorialu Django Girls! Super Cię widzieć :) W tym tutorialu odbędziemy podróż po technologiach internetowych, oferując Tobie podgląd na wszystkie części składowych, które połączone razem tworzą sieć taką, jaką ją znamy. +Witaj w tutorialu Django Girls! Super Cię widzieć! :) W tym tutorialu odbędziemy podróż po technologiach internetowych, oferując Tobie podgląd na wszystkie części składowe, które połączone razem tworzą sieć taką, jaką ją znamy. -Jak z wszystkim, co jest nieznane, będzie to naprawdę niezła przygoda - ale nie przejmuj się, skoro już się tutaj znalazłaś, to dalej już będzie tylko z górki :) +Jak z wszystkim, co jest nieznane, będzie to naprawdę niezła przygoda - ale nie przejmuj się, skoro już się tutaj znalazłaś, to dalej już będzie tylko z górki! :) ## Wprowadzenie @@ -34,7 +34,7 @@ Ok, [zacznijmy od początku...](./how_the_internet_works/README.md) ## Przerabiasz tutorial w domu? -Udział w warsztatach Django Girls to niesamowite doświadczenie, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe. Z tego powodu zachęcamy Ciebie byś spróbowała przerobić tutorial w domu. Dla czytelniczek w domu, jesteśmy właśnie w trakcie przygotowywani materiałów wideo, które ułatwią samodzielne podążanie za tutorialem. Na chwilę obecną nie posiadamy wideo do wszystkich rozdziałów, ale dzień po dniu, rozdział po rozdziale kolejne materiały będą się pojawiać na kanale [Coding is for girls](https://www.youtube.com/channel/UC0hNd2uW8jTR5K3KBzRuG2A/feed) na YouTubie. +Udział w warsztatach Django Girls to niesamowite doświadczenie, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe. Z tego powodu zachęcamy Ciebie, byś spróbowała przerobić tutorial w domu. Dla czytelniczek w domu, jesteśmy właśnie w trakcie przygotowywani materiałów wideo, które ułatwią samodzielne podążanie za tutorialem. Na chwilę obecną nie posiadamy wideo do wszystkich rozdziałów, ale dzień po dniu, rozdział po rozdziale kolejne materiały będą się pojawiać na kanale [Coding is for girls](https://www.youtube.com/channel/UC0hNd2uW8jTR5K3KBzRuG2A/feed) na YouTubie. W każdym rozdziale, który posiada materiał wideo, udostępniamy link, który do niego prowadzi. diff --git a/pl/SUMMARY.md b/pl/SUMMARY.md index d699be9634b..2f6cfeae2cc 100755 --- a/pl/SUMMARY.md +++ b/pl/SUMMARY.md @@ -3,8 +3,8 @@ * [Wprowadzenie](README.md) * [Instalacja](installation/README.md) * [Instalacja (chromebook)](chromebook_setup/README.md) -* [Jak działa internet](how_the_internet_works/README.md) -* [Wprowadzenie do linii poleceń](intro_to_command_line/README.md) +* [Jak działa internet?](how_the_internet_works/README.md) +* [Wprowadzenie do wiersza poleceń](intro_to_command_line/README.md) * [Instalowanie Pythona](python_installation/README.md) * [Edytor tekstu](code_editor/README.md) * [Wprowadzenie do Pythona](python_introduction/README.md) @@ -16,7 +16,7 @@ * [Wdrażanie!](deploy/README.md) * [Adresy URL w Django](django_urls/README.md) * [Widoki Django - czas zacząć tworzyć!](django_views/README.md) -* [Wprowadzenie do HTMLa](html/README.md) +* [Wprowadzenie do HTML-a](html/README.md) * [Django ORM (QuerySet)](django_orm/README.md) * [Dane dynamiczne w szablonach Django](dynamic_data_in_templates/README.md) * [Szablony Django](django_templates/README.md) diff --git a/pl/deploy/README.md b/pl/deploy/README.md index f7a36e7ac2d..2a1a73d59a5 100755 --- a/pl/deploy/README.md +++ b/pl/deploy/README.md @@ -84,9 +84,9 @@ I na końcu zapisujemy zmiany. Przejdź do konsoli i wykonaj poniższe polecenia create mode 100644 mysite/wsgi.py -## Przesyłanie kodu do GitHub +## Przesyłanie kodu do GitHuba -Wejdź na stronę [GitHub.com](https://www.github.com) i utwórz nowe darmowe konto. (Jeśli już to wcześniej zrobiłaś to super!) +Wejdź na stronę [GitHub.com](https://www.github.com) i utwórz nowe, darmowe konto. (Jeśli już to wcześniej zrobiłaś, to super!) Następnie utwórz nowe repozytorium i nadaj mu nazwę "my-first-blog" (ang. "mój-pierwszy-blog"). Pozostaw niezaznaczone pole wyboru "initialize with README", pozostaw opcję .gitignore pustą (zrobiłyśmy to ręcznie) i pozostaw licencję jako None. @@ -125,7 +125,7 @@ Wpisz swoją nazwę użytkownika GitHub oraz hasło, a wtedy powinnaś zobaczyć -Twój kod jest teraz na GitHubie. Możesz to sprawdzić! Zważ, że znajduje się w wyśmienitym towarzystwie - [Django](https://github.com/django/django), [kurs Django Girls](https://github.com/DjangoGirls/tutorial) i wiele innych świetnych projektów open-source trzyma swój kod na GitHubie. :) +Twój kod jest teraz na GitHubie. Możesz to sprawdzić! Znajdujesz się teraz w wyśmienitym towarzystwie - [Django](https://github.com/django/django), [kurs Django Girls](https://github.com/DjangoGirls/tutorial) i wiele innych świetnych projektów open-source trzyma swój kod na GitHubie! :) # Wdrażanie bloga na PythonAnywhere @@ -137,22 +137,22 @@ Twój kod jest teraz na GitHubie. Możesz to sprawdzić! Zważ, że znajduje si ## Konfigurowanie naszej strony w PythonAnywhere -Wróć do głównego panelu [PythonAnywhere Dashboard](https://www.pythonanywhere.com/), klikając logo, i wybierz opcję uruchomienia konsoli "Bash" - jest to wersja wiersza poleceń PythonAnywhere, podobnie jak na Twoim komputerze. +Wróć do głównego panelu [PythonAnywhere Dashboard](https://www.pythonanywhere.com/), klikając logo i wybierz opcję uruchomienia konsoli "Bash" - jest to wersja wiersza poleceń PythonAnywhere, podobnie jak na Twoim komputerze. ![Wybierz Bash w sekcji New Console](images/pythonanywhere_bash_console.png) -> **Uwaga** PythonAnywhere jest oparty na Linuksie, więc jeśli pracujesz na Windowsie to konsola będzie wyglądać trochę inaczej niż na Twoim komputerze. +> **Uwaga** PythonAnywhere jest oparty na Linuksie, więc jeśli pracujesz na Windowsie, to konsola będzie wyglądać trochę inaczej, niż na Twoim komputerze. -Wdrożenie aplikacji internetowej w PythonAnywhere polega na ściągnięciu kodu z GitHub, a następnie skonfigurowaniu PythonAnywhere w celu rozpoznania go i rozpoczęciu wyświetlania go jako aplikacji internetowej. Istnieją manualne sposoby robienia tego, ale PythonAnywhere zapewnia narzędzie pomocnicze, które zrobi to wszystko za Ciebie. W pierwszej kolejności zainstalujmy: +Wdrożenie aplikacji internetowej w PythonAnywhere polega na ściągnięciu kodu z GitHuba, a następnie skonfigurowaniu PythonAnywhere w celu rozpoznania go i rozpoczęciu wyświetlania go jako aplikacji internetowej. Istnieją manualne sposoby robienia tego, ale PythonAnywhere zapewnia narzędzie pomocnicze, które zrobi to wszystko za Ciebie. W pierwszej kolejności zainstalujmy: {% filename %}PythonAnywhere command-line{% endfilename %} $ pip3.6 install --user pythonanywhere -To powinno wydrukować rzeczy, takie jak `Collecting pythonanywhere`, a kończy się na linii z napisem `Successfully installed (...) pythonanywhere- (...)`. +To powinno wydrukować rzeczy takie jak `Collecting pythonanywhere`, a skończyć się na linii z napisem `Successfully installed (...) pythonanywhere- (...)`. -Teraz uruchamiamy pomocnika, aby automatycznie skonfigurować naszą aplikację z GitHub. Wpisz następujące polecenie do konsoli w PythonAnywhere (nie zapomnij zamienić `` na swoją nazwę użytkownika): +Teraz uruchamiamy pomocnika, aby automatycznie skonfigurować naszą aplikację z GitHubem. Wpisz następujące polecenie do konsoli w PythonAnywhere (nie zapomnij zamienić `` na swoją nazwę użytkownika): {% filename %}PythonAnywhere command-line{% endfilename %} @@ -161,8 +161,8 @@ Teraz uruchamiamy pomocnika, aby automatycznie skonfigurować naszą aplikację Jeżeli patrzysz na proces, będziesz mogła zobaczyć: -- Pobieranie kodu z GitHub -- Tworzenie środowiska wirtualnego na PythonAnywhere, podobnie jak na Twóim PC +- Pobieranie kodu z GitHuba +- Tworzenie środowiska wirtualnego na PythonAnywhere, podobnie jak na Twoim PC - Aktualizowanie pliku ustawień z niektórych ustawień wdrażania - Konfigurowanie bazy danych w PythonAnywhere za pomocą polecenia `manage.py migrate` - Konfigurowanie plików statycznych (dowiemy się o nich później) @@ -177,7 +177,7 @@ W rezultacie, tak jak zrobiłyśmy to na własnym komputerze, musimy zainicjowa (ola.pythonanywhere.com) $ python manage.py createsuperuser -Wpisz szczegóły dla swojego administratora. Najlepiej używać tych samych, których używasz na swoim komputerze, aby uniknąć nieporozumień, chyba że chcesz, aby hasło w PythonAnywhere było bezpieczniejsze. +Wpisz szczegóły dla konta swojego administratora. Najlepiej używać tych samych, których używasz na swoim komputerze, aby uniknąć nieporozumień, chyba że chcesz, aby hasło w PythonAnywhere było bezpieczniejsze. Teraz, jeśli chcesz, możesz również rzucić okiem na swój kod w PythonAnywhere używając `ls`: @@ -194,9 +194,9 @@ Możesz także przejść do zakładki "Pliki" i poruszać się za pomocą wbudow ## Jesteś na żywo! -Twoja strona powinna teraz być dostępna w publicznym Internecie! Przejdź do zakładki "Sieć" PythonAnywhere, aby uzyskać link do niej. Możesz podzielić się tym z kimkolwiek chcesz :) +Twoja strona powinna teraz być dostępna w publicznym Internecie! Przejdź do zakładki "Sieć" PythonAnywhere, aby uzyskać link do niej. Możesz podzielić się nim z kimkolwiek chcesz :) -> **Uwaga:** Jest to poradnik dla początkujących, a podczas wdrażania tej witryny użyłyśmy kilka skrótów, które nie są idealnym rozwiązaniem z punktu widzenia bezpieczeństwa. Jeśli zdecydujesz się zbudować ten projekt, lub rozpocząć nowy projekt, należy przejrzeć [Django deployment checklist](https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/) aby uzyskać jakieś wskazówki dotyczące zabezpieczania witryny. +> **Uwaga:** Jest to poradnik dla początkujących, a podczas wdrażania tej witryny użyłyśmy kilka skrótów, które nie są idealnym rozwiązaniem z punktu widzenia bezpieczeństwa. Jeśli zdecydujesz się zbudować ten projekt lub rozpocząć nowy projekt, należy przejrzeć [Django deployment checklist](https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/), aby uzyskać jakieś wskazówki dotyczące zabezpieczania witryny. ## Porady dotyczące debugowania @@ -204,9 +204,9 @@ Jeśli widzisz błąd podczas uruchamiania skryptu `pa_autoconfigure_django.py`, - Zapominasz utworzyć Twój PythonAnywhere API token. - Robisz błąd w GitHub URL -- Jeśli zobaczysz komunikat o błędzie *"Could not find your settings.py"*, prawdopodobnie nie udało Ci się dodać wszystkich plików do Git, i / lub nie przekazałeś ich do GitHub pomyślnie. Jeszcze raz spójrz na sekcję Git powyżej +- Jeśli zobaczysz komunikat o błędzie *"Could not find your settings.py"*, prawdopodobnie nie udało Ci się dodać wszystkich plików do Git, i / lub nie przekazałeś ich do pomyślnie do GitHuba. Jeszcze raz spójrz na sekcję Git powyżej -Jeśli odwiedzając swoją stronę zobaczysz błąd, to pierwszym miejscem, w którym powinnaś poszukać informacji o tym, co się stało jest Twój **dziennik błędów** (ang. "error log"). Znajdziesz do niego link na karcie [Web](https://www.pythonanywhere.com/web_app_setup/) w PythonAnywhere. Sprawdź czy znajdują się tam jakieś komunikaty o błędach; te najświeższe znajdują się na samym dole. +Jeśli odwiedzając swoją stronę zobaczysz błąd, to pierwszym miejscem, w którym powinnaś poszukać informacji o tym, co się stało, jest Twój **dziennik błędów** (ang. "error log"). Znajdziesz do niego link na karcie [Web](https://www.pythonanywhere.com/web_app_setup/) w PythonAnywhere. Sprawdź, czy znajdują się tam jakieś komunikaty o błędach - te najświeższe znajdują się na samym dole. Są tam też dostępne [generalne porady odnośnie debugowania na stronie pomocy PythonAnywhere](http://help.pythonanywhere.com/pages/DebuggingImportError). @@ -214,8 +214,8 @@ I pamiętaj, Twój mentor jest tutaj, by Ci pomóc! # Sprawdź swoją stronę! -Domyślna strona Twojej witryny powinna brzmieć "It worked!", tak jak na Twoim lokalnym komputerze. Spróbuj dodać `/admin/` na koniec swojego adresu URL, powinnaś się przenieść do panelu admina. Zaloguj się przy użyciu nazwy użytkownika i hasła, a zobaczysz, że możesz dodawać nowe posty na serwerze. +Domyślna strona Twojej witryny powinna brzmieć "It worked!", tak jak na Twoim lokalnym komputerze. Spróbuj dodać `/admin/` na koniec swojego adresu URL - powinnaś się przenieść do panelu admina. Zaloguj się przy użyciu nazwy użytkownika i hasła, a zobaczysz, że możesz dodawać nowe posty na serwerze. -Po utworzeniu kilku postów możesz wrócić do konfiguracji lokalnej (nie PythonAnywhere). Od teraz powinnaś pracować na swoim lokalnym komputerze, jeżeli będziesz chciała dokonać zmian na stronie. To częsty sposób pracy w rozwijaniu stron www - wprowadzaj zmiany lokalnie, wypychaj je na GitHuba i zaciągaj na swój internetowy serwer www. Pozwala to na pracę i eksperymentowanie bez obawy, że zepsujesz działającą stronę. Całkiem nieźle, co nie? +Po utworzeniu kilku postów możesz wrócić do konfiguracji lokalnej (nie PythonAnywhere). Od teraz powinnaś pracować na swoim lokalnym komputerze, jeżeli będziesz chciała dokonać zmian na stronie. To częsty sposób pracy w rozwijaniu stron WWW - wprowadzaj zmiany lokalnie, wypychaj je na GitHuba i zaciągaj na swój internetowy serwer WWW. Pozwala to na pracę i eksperymentowanie bez obawy, że zepsujesz działającą stronę. Całkiem nieźle, co nie? -*Przybij piątkę!* Wdrożenia serwerów są jednym z najtrudniejszych elementów tworzenia stron internetowych i często ludzie potrzebują kilku dni, zanim zaczną działać. Masz swoją witrynę na żywo, w prawdziwym Internecie, właśnie tak! \ No newline at end of file +*Przybij piątkę!* Wdrożenia strony na serwery są jednym z najtrudniejszych elementów tworzenia stron internetowych i często ludzie potrzebują kilku dni, zanim wszystko zacznie poprawnie działać. Masz swoją witrynę na żywo, w prawdziwym Internecie, właśnie tak! \ No newline at end of file diff --git a/pl/django/README.md b/pl/django/README.md index 9f2800e8bcd..9bc71e347ec 100755 --- a/pl/django/README.md +++ b/pl/django/README.md @@ -8,15 +8,15 @@ Na szczęście pewni programiści już kiedyś zauważyli, że wszyscy web devel Frameworki istnieją, by oszczędzić Ci wyważania otwartych drzwi i ułatwić Ci proces tworzenia nowej strony. -## Dlaczego potrzebujesz frameworku? +## Dlaczego potrzebujesz frameworka? -By zrozumieć do czego naprawdę służy Django, musimy lepiej przyjrzeć się serwerom. Pierwszą rzeczą którą musi wiedzieć serwer jest to, że chcesz, żeby wyświetlił Ci stronę. +By zrozumieć do czego naprawdę służy Django, musimy lepiej przyjrzeć się serwerom. Pierwszą rzeczą, którą musi wiedzieć serwer, jest to, że chcesz, żeby wyświetlił Ci stronę. -Wyobraź sobie skrzynkę pocztową (port), która monitorowana pod kątem przychodzących listów (żądań). To właśnie rola serwera WWW. Serwer czyta listę (żądanie), a następnie odsyła odpowiedź przy użyciu strony internetowej. Ale gdy chcesz coś wysłać, musisz mieć jakąś treść. A Django jest właśnie tym, co pomoże Ci stworzyć tę treść. +Wyobraź sobie skrzynkę pocztową (port), która monitorowana jest pod kątem przychodzących listów (żądań). To właśnie rola serwera WWW. Serwer czyta listę (żądanie), a następnie odsyła odpowiedź przy użyciu strony internetowej. Ale gdy chcesz coś wysłać, musisz mieć jakąś treść. A Django jest właśnie tym, co pomoże Ci stworzyć tę treść. ## Co się dzieje, gdy ktoś chce otworzyć stronę z Twojego serwera? -Kiedy serwer otrzymuje żądanie, przekazuje je dalej do Django, aby ten ustalił, czego właściwie ono dotyczy. Django sprawdza najpierw adres strony i decyduje, co zrobić dalej. Ta część jest wykonywana przez obecny w Django mechanizm rozpoznawania adresów (ang. **urlresolver** - zwróć uwagę, że adres strony to inaczej adres URL, czyli angielska nazwa tego modułu nie jest przypadkowa). Nie jest on zbyt inteligentny - pobiera listę wzorców i próbuje dopasować adres URL. Django sprawdza wzorce od góry do dołu i jeśli uda się znaleźć pasującą regułę, Django przekazuje żądanie do odpowiedniej funkcji (zwanej *widokiem*). +Kiedy serwer otrzymuje żądanie, przekazuje je dalej do Django, aby ten ustalił, czego właściwie ono dotyczy. Django sprawdza najpierw adres strony i decyduje, co zrobić dalej. Ta część jest wykonywana przez obecny w Django mechanizm rozpoznawania adresów (ang. **urlresolver** - zwróć uwagę, że adres strony to inaczej adres URL, czyli angielska nazwa tego modułu nie jest przypadkowa). Nie jest on zbyt inteligentny - pobiera listę wzorców i próbuje dopasować adres URL. Django sprawdza wzorce od góry do dołu i jeśli uda się znaleźć pasującą regułę, przekazuje żądanie do odpowiedniej funkcji (zwanej *widokiem*). Wyobraź sobie listonosza niosącego list. Idzie ulicą i porównuje każdy numer domu z adresem na kopercie. List zostawia w skrzynce tego domu, którego adres pasuje. Tak samo działa urlresolver! diff --git a/pl/django_admin/README.md b/pl/django_admin/README.md index f2a289e28f9..5e847011719 100755 --- a/pl/django_admin/README.md +++ b/pl/django_admin/README.md @@ -15,13 +15,13 @@ admin.site.register(Post) Jak widać, importujemy (dołączamy) model Post, który zdefiniowałyśmy w poprzednim rozdziale. Aby nasz model był widoczny w panelu admina, musimy go zarejestrować za pomocą polecenia `admin.site.register(Post)`. -OK, czas rzucić okiem na nasz model Post. Pamiętaj, by wpisać `python manage.py runserver` w wierszu poleceń, by uruchomić serwer. Przejdź do przeglądarki i wpisz adres http://127.0.0.1: 8000/admin /. Zobaczysz stronę logowania podobną do tej: +OK, czas rzucić okiem na nasz model Post. Pamiętaj, by wpisać `python manage.py runserver` w wierszu poleceń, by uruchomić serwer. Przejdź do przeglądarki i wpisz adres http://127.0.0.1: 8000/admin/. Zobaczysz stronę logowania podobną do tej: ![Strona logowania](images/login_page2.png) -Aby móc się zalogować, musisz utworzyć konto administratora (*superuser*) - czyli użytkownika, który posiada nieograniczony dostęp do całej strony. Wróć do wiersza poleceń, wpisz `python manage.py createsuperuser`, i wciśnij enter. +Aby móc się zalogować, musisz utworzyć konto administratora (*superuser*) - czyli użytkownika, który posiada nieograniczony dostęp do całej strony. Wróć do wiersza poleceń, wpisz `python manage.py createsuperuser` i wciśnij enter. -> Pamietaj, aby móc wprowadzić nowe polecenie podczas pracy web serwera, otwórz nowy terminal i aktywuj virtualenv. Przyjrzałyśmy się, jak wpisywać nowe komendy w rozdziale **Twój pierwszy projekt w Django!**, w sekcji **Uruchamianie serwera www**. +> Pamietaj - aby móc wprowadzić nowe polecenie podczas pracy web serwera, otwórz nowy terminal i aktywuj virtualenv. Przyjrzałyśmy się, jak wpisywać nowe komendy w rozdziale **Twój pierwszy projekt w Django!**, w sekcji **Uruchamianie serwera www**. {% filename %}Mac OS X or Linux:{% endfilename %} diff --git a/pl/django_forms/README.md b/pl/django_forms/README.md index 9344331ffa3..ce21a8f1e56 100755 --- a/pl/django_forms/README.md +++ b/pl/django_forms/README.md @@ -1,6 +1,6 @@ # Formularze Django -Ostatnią rzeczą jaką potrzebujemy dla naszej strony jest stworzenie przyjemnego sposobu dodawania i edytowania wpisów na bloga. Panel administracyjny (Django `admin`) jest fajny, ale raczej ciężko się go dostosowuje do niestandardowych potrzeb i ciężko poprawić jego wygląd. Z formularzami (`forms`) mamy absolutną władzę nad naszym interfejsem - możemy zbudować niemal wszystko, co nam przyjdzie do głowy! +Ostatnią rzeczą, jaką potrzebujemy dla naszej strony, jest stworzenie przyjemnego sposobu dodawania i edytowania wpisów na blog. Panel administracyjny (Django `admin`) jest fajny, ale raczej ciężko się go dostosowuje do niestandardowych potrzeb i ciężko poprawić jego wygląd. Z formularzami (`forms`) mamy absolutną władzę nad naszym interfejsem - możemy zbudować niemal wszystko, co nam przyjdzie do głowy! Sympatyczną cechą formularzy Django jest to, że możemy je budować samodzielnie od zera lub posłużyć się formularzem modelu (`ModelForm`), który zapisze dane wynikowe w danym modelu. @@ -36,11 +36,11 @@ Musimy najpierw zaimportować formularze Django (`from django import forms`) ora Dalej mamy `class Meta`, gdzie przekazujemy Django informację o tym, jaki model powinien być wykorzystany do stworzenia tego formularza (`model = Post`). -I wreszcie możemy wskazać, które pole (lub pola) powinny pojawić się w naszym formularzu. W tym przypadku chcemy udostępnić tylko pola `title` (tytuł) i `text` (treść wpisu) - pole autora, czyli `author` powinno zawierać aktualnie zalogowanego użytkownika (Ciebie!), zaś data stworzenia wpisu (`created_date`) powinna być ustawiana automatycznie gdy stworzymy wpis (czyli za pomocą kodu) - zgadza się? +I wreszcie możemy wskazać, które pole (lub pola) powinny pojawić się w naszym formularzu. W tym przypadku chcemy udostępnić tylko pola `title` (tytuł) i `text` (treść wpisu) - pole autora, czyli `author` powinno zawierać aktualnie zalogowanego użytkownika (Ciebie!), zaś data stworzenia wpisu (`created_date`) powinna być ustawiana automatycznie, gdy stworzymy wpis (czyli za pomocą kodu) - zgadza się? I to wszystko! Jedyne, co potrzebujemy teraz zrobić, to użyć naszego formularza wewnątrz *widoku* i wyświetlić go w szablonie. -Oto, co za chwilę stworzymy: link do strony, adres URL, widok i szablon. +Oto co za chwilę stworzymy: link do strony, adres URL, widok i szablon. ## Odnośnik do strony z formularzem @@ -52,7 +52,7 @@ Czas otworzyć plik `blog/templates/blog/base.html`. Wewnątrz `div`-a o nazwie ``` -Zauważ, że chcemy odwołać się do naszego nowego widoku `post_new`. Klasa `"glyphicon glyphicon-plus"` jest dostarczana przez bootstrap, którego używamy i wyświetli nam znak plus. +Zauważ, że chcemy odwołać się do naszego nowego widoku `post_new`. Klasa `"glyphicon glyphicon-plus"` jest dostarczana przez bootstrap którego używamy i wyświetli nam znak plus. Po dodaniu powyższej linii Twój plik HTML powinien wyglądać następująco: @@ -167,7 +167,7 @@ Czas odświeżyć stronę! Hura! Twój formularz został wyświetlony! ![Nowy formularz](images/new_form2.png) -Ale zaraz zaraz! Co się stanie, gdy wpiszesz coś w pola z `tytułem` i `treścią`, a następnie spróbujesz to zapisać? +Ale zaraz, zaraz! Co się stanie, gdy wpiszesz coś w pola z `tytułem` i `treścią`, a następnie spróbujesz to zapisać? Nic! Znów jesteśmy na tej samej stronie, a nasza treść zniknęła... a nowego wpisu nie ma. Co poszło źle? @@ -273,11 +273,11 @@ Wspaniale! Teraz pokażemy Ci, jak fajne potrafią być formularze w Django. Wpis na blogu potrzebuje uzupełnionych pól `title` i `text`. W naszym modelu `Post` nie powiedzieliśmy (z wyjątkiem `published_date`), że te pola nie są wymagane, więc Django domyślnie uważa, że muszą zostać wypełnione. -Spróbuj zapisać formularz bez uzupełnionych pól `title` i `text`. Zgadnij, co się stanie! +Spróbuj zapisać formularz bez uzupełnionych pól `title` i `text`. Zgadnij, co się stanie? ![Walidacja formularza](images/form_validation2.png) -Django dba o walidację pól w naszym formularzu, upewniając się, czy są uzupełnione poprawnie. Prawda że niesamowite? +Django dba o walidację pól w naszym formularzu, upewniając się, czy są uzupełnione poprawnie. Prawda, że niesamowite? ## Edycja formularza @@ -396,7 +396,7 @@ Dodamy kolejny tag `{% if %}`, który sprawi, że link będzie widoczny tylko dl Ten `{% if %}` spowoduje, że link zostanie wysłany do przeglądarki tylko wtedy, kiedy użytkownik chcący wyświetlić tę stronę jest zalogowany. To nie chroni tworzenia wpisów w 100%, ale jest to dobry pierwszy krok. Zagadnieniu bezpieczeństwa poświęcimy więcej miejsca w rozszerzeniu do tego kursu. -Pamiętasz ikonkę edycji, która przed chwilą dodałyśmy do naszej strony szczegółów? Chcemy też dodać tą samą zmianę tutaj, tak by inne osoby nie były w stanie edytować istniejących postów. +Pamiętasz ikonkę edycji, która przed chwilą dodałyśmy do naszej strony szczegółów? Chcemy też dodać tę samą zmianę tutaj tak, by inne osoby nie były w stanie edytować istniejących postów. Otwórz `blog/templates/blog/post_detail.html` i znajdź poniższą linijkę: @@ -416,7 +416,7 @@ Zamień ją na: {% endif %} ``` -Ponieważ jesteś najprawdopodobniej zalogowana, jeżeli odświeżysz stronę nie zobaczysz żadnej zmiany. Podejrzyj stronę w innej przeglądarce lub chociaż w trybie incognito (nazywanym "InPrivate" w Windows Edge) i zobaczysz, że link ten i ikonka się nie pojawiają! +Ponieważ jesteś najprawdopodobniej zalogowana, jeżeli odświeżysz stronę, nie zobaczysz żadnej zmiany. Podejrzyj stronę w innej przeglądarce lub chociaż w trybie incognito (nazywanym "InPrivate" w Windows Edge) i zobaczysz, że ten link i ikonka się nie pojawiają! ## Jeszcze jedno: czas na wdrożenie! diff --git a/pl/django_installation/README.md b/pl/django_installation/README.md index 58833a6a2f5..b68fba400f9 100644 --- a/pl/django_installation/README.md +++ b/pl/django_installation/README.md @@ -1,7 +1,7 @@ # Instalowanie Django -> **Uwaga** Jeśli używasz już Chromebook, pomiń ten rozdział i upewnij się, że postąpiłeś zgodnie z instrukcją [Instalowanie Chromebook](../chromebook_setup/README.md). +> **Uwaga** Jeśli używasz już Chromebooka, pomiń ten rozdział i upewnij się, że postąpiłeś zgodnie z instrukcją [Instalowanie Chromebook](../chromebook_setup/README.md). > -> **Uwaga** Jeśli wykonałeś krok Instalacja to masz już wszystko zrobione - możesz przejść od razu do następnego kroku! +> **Uwaga** Jeśli wykonałaś krok Instalacja, to masz już wszystko zrobione - możesz przejść od razu do następnego kroku! {% include "/django_installation/instructions.md" %} \ No newline at end of file diff --git a/pl/django_installation/instructions.md b/pl/django_installation/instructions.md index e47d7b4c12e..554f6df8ccd 100755 --- a/pl/django_installation/instructions.md +++ b/pl/django_installation/instructions.md @@ -12,7 +12,7 @@ Jedyne, co potrzebujesz zrobić, to wybrać katalog, w którym chcesz utworzyć > **UWAGA:** W Windowsie upewnij się, że katalog ten nie zawiera znaków akcentowanych lub specjalnych; Jeśli Twoja nazwa użytkownika zawiera znaki akcentowane, użyj innego katalogu, na przykład `C:\djangogirls`. -Na potrzeby kursu będziemy stwórzmy nowy katalog `djangogirls` w Twoim katalogu domowym: +Na potrzeby kursu będziemy tworzyć nowy katalog `djangogirls` w Twoim katalogu domowym: {% filename %}command-line{% endfilename %} diff --git a/pl/django_models/README.md b/pl/django_models/README.md index f0ae88b6a27..033f70dc122 100755 --- a/pl/django_models/README.md +++ b/pl/django_models/README.md @@ -30,7 +30,7 @@ Nasz `Kot` ma określone czynności: `mrucz`, `podrap`, `jedz` (i w tym przypadk Czyli w zasadzie chodzi o to, że opisujemy prawdziwe rzeczy w kodzie za pomocą właściwości (zwanych `właściwościami obiektu`) oraz czynności (zwanych `metodami`). -W takim razie jak będzie wyglądał model naszego postu na blogu? Chcemy zbudować bloga, zgadza się? +W takim razie jak będzie wyglądał model naszego postu na blogu? Chcemy zbudować blog, zgadza się? Musimy sobie odpowiedzieć na pytanie: Czym jest post na blogu? Jakie powinien mieć właściwości? @@ -142,7 +142,7 @@ class Post(models.Model): > Upewnij się, że używasz dwóch znaków podkreślenia (`_`) po obu stronach `str`. W Pythonie używa się ich bardzo często i czasem nazywa się je "dunder" (skrót od angielskiej nazwy: "double-underscore"). -Wygląda przerażająco, prawda? Ale nie martw się - będziemy tłumaczyć co te linijki znaczą! +Wygląda przerażająco, prawda? Ale nie martw się - będziemy tłumaczyć, co te linijki znaczą! Wszystkie wiersze zaczynające się od `from` lub `import` są wierszami dodającymi jakieś elementy z innych plików. Czyli zamiast kopiowania i wklejania tych samych treści w każdym pliku, możemy po prostu zawrzeć ich fragmenty za pomocą `from... import ...`. @@ -152,7 +152,7 @@ Wszystkie wiersze zaczynające się od `from` lub `import` są wierszami dodają - `Post` to nazwa naszego modelu. Możemy nadać mu inną nazwę (bez polskich liter, znaków specjalnych i spacji). Zawsze zaczynaj nazwę modelu wielką literą. - `models.Model` oznacza, że nasz obiekt Post jest modelem Django. W ten sposób Django wie, że powinien go przechowywać w bazie danych. -Teraz dodamy właściwości, o których wspomniałyśmy już wcześniej: `title` (tytuł), `text` (treść wpisu), `created_date` (data utworzenia), `published_date` (data publikacji) oraz `author` (autor). Do tego celu potrzebujemy określić typ każdego pola (Czy to jest tekst? Liczba? Data? Odwołanie do innego obiektu, np. Użytkownika?) +Teraz dodamy właściwości, o których wspomniałyśmy już wcześniej: `title` (tytuł), `text` (treść wpisu), `created_date` (data utworzenia), `published_date` (data publikacji) oraz `author` (autor). Do tego celu potrzebujemy określić typ każdego pola (Czy to jest tekst? Liczba? Data? Odwołanie do innego obiektu, np. użytkownika?) - `models.CharField` - tak definiujemy tekst z ograniczoną liczbą znaków. - `models.TextField` - a to nadaje się do dłuższych tekstów bez ograniczeń w ilości znaków. Dla treści wpisu będzie idealne, prawda? diff --git a/pl/django_orm/README.md b/pl/django_orm/README.md index ebb2ac111ec..9a799e6a374 100755 --- a/pl/django_orm/README.md +++ b/pl/django_orm/README.md @@ -26,7 +26,7 @@ Efekt powinien wyglądać tak: >>> ``` -Jesteś teraz w intrektywnej konsoli Django. Przypomina ona nieco wiersz poleceń Pythona, z odrobiną dodatkowej magii Django :) Oczywiście możesz także używać w niej wszystkich poleceń Pythona. +Jesteś teraz w intrektywnej konsoli Django. Przypomina ona nieco wiersz poleceń Pythona, z odrobiną dodatkowej magii Django. :) Oczywiście możesz także używać w niej wszystkich poleceń Pythona. ### Wszystkie obiekty diff --git a/pl/django_start_project/README.md b/pl/django_start_project/README.md index 5b8eaab0f0f..7e8831bd1e5 100755 --- a/pl/django_start_project/README.md +++ b/pl/django_start_project/README.md @@ -4,13 +4,13 @@ > > Fragmenty tego rozdziału są oparte o [tutorial django-marcador](http://django-marcador.keimlink.de/) na licencji Creative Commons Attribution-ShareAlike International 4.0. Tutorial django-marcador jest chroniony prawami autorskimi przez Markusa Zapke-Gründemanna i in. -Mamy zamiar stworzyć prostego bloga! +Mamy zamiar stworzyć prosty blog! Pierwszy krok, który trzeba wykonać, to utworzenie nowego projektu Django. To oznacza, że skorzystamy z dostarczonych przez Django skryptów, które utworzą za nas szkielet projektu Django. Ten szkielet to zbiór katalogów i plików, których będziemy używać później. Nazwy niektórych plików i katalogów są bardzo ważne dla Django. Nie powinnaś zmieniać nazw plików, które zostaną utworzone. Przenoszenie ich w inne miejsce też nie jest dobrym pomysłem. Django wymaga zachowania pewnej struktury, by móc szybko znaleźć potrzebne rzeczy. -> Pamiętaj, aby uruchamiać wszystko w virtualenv. Jeśli nie widzisz prefiksu `(myvenv)` w konsoli, to znaczy że musisz uruchomić swój virtualenv. Wyjaśniłyśmy, jak to zrobić w rozdziale **Instalacja Django** w części **Praca z virtualenv**. Wystarczy wpisać `myvenv\Scripts\activate` w systemie Windows lub `source myvenv/bin/activate`, jeśli używasz Mac OS X lub Linux. +> Pamiętaj, aby uruchamiać wszystko w virtualenvie. Jeśli nie widzisz prefiksu `(myvenv)` w konsoli, to znaczy że musisz uruchomić swój virtualenv. Wyjaśniłyśmy, jak to zrobić w rozdziale **Instalacja Django** w części **Praca z virtualenv**. Wystarczy wpisać `myvenv\Scripts\activate` w systemie Windows lub `source myvenv/bin/activate`, jeśli używasz Mac OS X lub Linux. @@ -23,7 +23,7 @@ Dla systemów MacOS X lub Linux, wpisz teraz do swojej konsoli następującą ko > Kropka `.` ma kluczowe znaczenie, ponieważ dzięki niej skrypt wie, że ma zainstalować Django w bieżącym katalogu (kropka `.` to taka skrócona nazwa bieżącego katalogu). > -> **Uwaga** Kiedy będziesz przepisywać komedy, które zamieściliśmy wyżej, pamiętaj, że przepisujesz tylko tę część, która zaczyna się od `django-admin`. `(myvenv) ~/djangogirls$` są tutaj tylko po to, by pokazać Ci przykład linii poleceń i tego jak ona będzie wyglądała, gdy będziesz do niej wpisywać polecenia. +> **Uwaga** Kiedy będziesz przepisywać komedy, które zamieściliśmy wyżej, pamiętaj, że przepisujesz tylko tę część, która zaczyna się od `django-admin`. `(myvenv) ~/djangogirls$` są tutaj tylko po to, by pokazać Ci przykład wiersza poleceń i tego, jak będzie on wyglądał, gdy będziesz wpisywać polecenia. @@ -38,7 +38,7 @@ Dla systemu Windows wpisz teraz do swojej konsoli następującą komendę. **Nie > Kropka `.` ma kluczowe znaczenie, ponieważ dzięki niej skrypt wie, że ma zainstalować Django w bieżącym katalogu (kropka `.` to taka skrócona nazwa bieżącego katalogu). > -> **Uwaga** Kiedy będziesz przepisywać komedy, które zamieściliśmy wyżej, pamiętaj, że przepisujesz tylko tę część, która zaczyna się od `django-admin.exe`. `(myvenv) C:\Users\Name\djangogirls>` są tutaj tylko po to, by pokazać Ci przykład znaku zachęty linii poleceń, który będzie Ciebie zapraszał, byś wpisała komendę. +> **Uwaga** Kiedy będziesz przepisywać komedy, które zamieściliśmy wyżej, pamiętaj, że przepisujesz tylko tę część, która zaczyna się od `django-admin.exe`. `(myvenv) C:\Users\Name\djangogirls>` są tutaj tylko po to, by pokazać Ci przykład znaku zachęty wiersza poleceń, który będzie Ciebie zapraszał, byś wpisała komendę. @@ -53,7 +53,7 @@ Dla systemu Windows wpisz teraz do swojej konsoli następującą komendę. **Nie __init__.py -> **Uwaga**: w strukturze katalogów, możesz zobaczyć również katalog `venv`, który stworzyliśmy wcześniej. +> **Uwaga**: w strukturze katalogów, możesz zobaczyć również katalog `venv`, który stworzyłyśmy wcześniej. `manage.py` jest skryptem ułatwiającym zarządzanie witryną. Za jego pomocą, oprócz wielu innych rzeczy, możemy uruchomić serwer na naszym komputerze bez potrzeby instalowania czegokolwiek. @@ -67,7 +67,7 @@ Na razie zapomnijmy o innych plikach - nie będziemy ich modyfikować. Jedyne, o Wprowadźmy parę zmian w pliku `mysite/settings.py`. Otwórz go za pomocą edytora kodu, który zainstalowałaś wcześniej. -**Uwaga**: należy pamiętać, że `settings.py` jest zwykłym plikiem, jak każdy inny. Otworzysz go w edytorze kodu, przy użyciu menu "plik-> Otwórz". Powinieneś otrzymać zwykłe okno, w którym możesz przejść do pliku `settings.py` i zaznaczyć go. Możesz również otworzyć plik, przechodząc do folderu djangogirls na pulpicie, klikając na niego prawym przyciskiem myszy. Następnie wybierz edytor kodu z listy. Wybór edytora jest ważny, ponieważ możesz mieć zainstalowane inne programy, które mogą otworzyć plik, ale nie pozwolą ci go edytować. +**Uwaga**: należy pamiętać, że `settings.py` jest zwykłym plikiem, jak każdy inny. Otworzysz go w edytorze kodu, przy użyciu menu "plik-> Otwórz". Powinnaś otrzymać zwykłe okno, w którym możesz przejść do pliku `settings.py` i zaznaczyć go. Możesz również otworzyć plik, przechodząc do folderu djangogirls na pulpicie, klikając na niego prawym przyciskiem myszy. Następnie wybierz edytor kodu z listy. Wybór edytora jest ważny, ponieważ możesz mieć zainstalowane inne programy, które mogą otworzyć plik, ale nie pozwolą Ci go edytować. Fajnie byłoby posługiwać się na naszej stronie właściwą strefą czasową. Przejdź do [listy stref czasowych w Wikipedii](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) i skopiuj właściwą strefę czasową (TZ) (np. `Europe/Warsaw`). @@ -152,7 +152,7 @@ Aby utworzyć bazę danych dla naszego bloga, wykonajmy następujące polecenie I to wszystko! Czas uruchomić serwer i zobaczyć, czy nasza strona działa! -## Uruchamianie serwera www +## Uruchamianie serwera WWW Musisz znajdować się w katalogu zawierającym plik `manage.py` (katalog `djangogirls`). W konsoli możemy uruchomić serwer za pomocą polecenia `python manage.py runserver`: @@ -175,7 +175,7 @@ Jeśli pracujesz na Windowsie i zobaczysz w tym momencie `UnicodeDecodeError`, u (myvenv) ~/djangogirls$ python manage.py runserver 0:8000 -Teraz wszystko, co musisz zrobić, to sprawdzić, czy Twoja strona działa. Otwórz przeglądarkę (Firefox, Chrome, Safari, Internet Explorer lub cokolwiek innego) i wprowadź ten adres: +Teraz wszystko, co musisz zrobić, to sprawdzić, czy Twoja strona działa. Otwórz przeglądarkę (Firefox, Chrome, Safari, Internet Explorer lub jakąkolwiek inną) i wprowadź ten adres: {% filename %}browser{% endfilename %} diff --git a/pl/django_templates/README.md b/pl/django_templates/README.md index 50054c8ac00..2b17ca54f29 100755 --- a/pl/django_templates/README.md +++ b/pl/django_templates/README.md @@ -101,6 +101,6 @@ Dobrze byłoby sprawdzić, czy twoja strona wciąż będzie działała w publicz Gratulacje! Teraz możesz dodać nowy wpis do swojego administratora Django (pamiętaj, aby dodać publish_date!). Upewnij się, że jesteś administratorem Django dla swojej strony pythonanywhere, https://yourname.pythonanywhere.com/admin. Następnie odśwież stronę, aby sprawdzić, czy pojawia się tam wiadomość. -Poszło jak z płatka? Jesteśmy dumne! Odejdź na chwilkę od komputera - zasłużyłaś na przerwę. :) +Poszło jak z płatka? Jesteśmy dumne! Odejdź na chwilkę od komputera - zasłużyłaś na przerwę! :) ![Rysunek 13.4](images/donut.png) \ No newline at end of file diff --git a/pl/django_urls/README.md b/pl/django_urls/README.md index f544bce6762..544031dfd8a 100755 --- a/pl/django_urls/README.md +++ b/pl/django_urls/README.md @@ -1,10 +1,10 @@ -# URLe Django +# URL-e Django -Zaczynamy budować naszą pierwszą stronę internetową: będzie to miejsce dla twojego bloga! Ale zanim zaczniemy, nauczmy się trochę na temat URLów w Django. +Zaczynamy budować naszą pierwszą stronę internetową: będzie to miejsce dla twojego bloga! Ale zanim zaczniemy, nauczmy się trochę na temat URL-i w Django. ## Czym jest URL? -Adres URL to po prostu adres w internecie. Możesz zobaczyć URLa za każdym razem, gdy odwiedzasz stronę internetową - jest on widoczny w pasku adresu przeglądarki internetowej. (Tak! `127.0.0.1:8000` jest adresem URL! Też `https://djangogirls.org` jest adresem URL.) +Adres URL to po prostu adres w internecie. Możesz zobaczyć URL-a za każdym razem, gdy odwiedzasz stronę internetową - jest on widoczny w pasku adresu przeglądarki internetowej. (Tak! `127.0.0.1:8000` jest adresem URL! Też `https://djangogirls.org` jest adresem URL.) ![Adres URL](images/url.png) @@ -31,7 +31,7 @@ urlpatterns = [ Jak zauważyłaś, Django coś nam już tu umieścił. -Linie między potrójnymi cudzysłowami (` '''` lub `""" `) nazywa się docstrings - możesz zapisać je na górze pliku, klasy lub metody, aby opisać, co robi. Nie będą one uruchamiane przez Python. +Linie między potrójnymi cudzysłowami (` '''` lub `""" `) nazywa się docstrings - możesz zapisać je na górze pliku, klasy lub metody, aby opisać, co robi. Nie będą one uruchamiane przez Pythona. Adres URL panelu administracyjnego, który odwiedzałaś w poprzednim rozdziale, jest już tutaj dodany: @@ -70,7 +70,7 @@ Pisanie osobnych widoków dla każdego numeru z osobna byłoby frustrujące. Z w Czas utworzyć nasz pierwszy adres URL! Chcemy, aby adres 'http://127.0.0.1:8000/' był stroną główną naszego bloga i wyświetlał listę wpisów. -Zależy nam również, aby zachować porządek w pliku `mysite/urls.py`, dlatego zaimportujemy URLe z naszej aplikacji `blog` do głównego pliku `mysite/urls.py`. +Zależy nam również, aby zachować porządek w pliku `mysite/urls.py`, dlatego zaimportujemy URL-e z naszej aplikacji `blog` do głównego pliku `mysite/urls.py`. Śmiało, dodaj linię, która zaimportuje `blog.urls`. Zauważ też, że używamy funkcji `include`, więc trzeba będzie ją też zaimportować. @@ -116,7 +116,7 @@ urlpatterns = [ ] ``` -Jak widzisz, teraz przyporządkowujemy widok (`view`) o nazwie `post_list` do URL `^$`. To wyrażenie regularne będzie dopasowywać `^` (początek) po którym następuje `$` (koniec) - więc tylko pusty ciąg znaków będzie zgodny. I to się zgadza, ponieważ dla mechanizmów rozróżniających adresy w Django 'http://127.0.0.1:8000/' nie jest częścią adresu URL. Ten wzorzec będzie wskazówką dla Django, że `views.post_list` jest właściwym miejscem dla każdego, kto wejdzie na stronę poprzez adres 'http://127.0.0.1:8000/'. +Jak widzisz, teraz przyporządkowujemy widok (`view`) o nazwie `post_list` do URL `^$`. To wyrażenie regularne będzie dopasowywać `^` (początek) po którym następuje `$` (koniec) - więc tylko pusty ciąg znaków będzie zgodny. I to się zgadza, ponieważ dla mechanizmów rozróżniających adresy w Django, 'http://127.0.0.1:8000/' nie jest częścią adresu URL. Ten wzorzec będzie wskazówką dla Django, że `views.post_list` jest właściwym miejscem dla każdego, kto wejdzie na stronę poprzez adres 'http://127.0.0.1:8000/'. Ostatnia część, `name='post_list` jest nazwą URL, która będzie używana do zidentyfikowania widoku. Nazwa może być taka sama jak nazwa widoku albo kompletnie inna. W projekcie będziemy później używać nazw URL, więc ważne jest nazwanie każdego URL-a w aplikacji. Powinnyśmy również starać się używać nazw URL unikalnych i prostych do zapamiętania. diff --git a/pl/django_views/README.md b/pl/django_views/README.md index bee8e798c64..9f61a1d523b 100755 --- a/pl/django_views/README.md +++ b/pl/django_views/README.md @@ -18,9 +18,9 @@ from django.shortcuts import render # Create your views here. ``` -Nie ma tu dużo rzeczy jeszcze. +Nie ma tu jeszcze zbyt wiele rzeczy. -Pamiętaj, że linie zaczynające się od `#` to komentarze - oznacza to, że te linie nie będą uruchamiane przez Python. +Pamiętaj, że linie zaczynające się od `#` to komentarze - oznacza to, że te linie nie będą uruchamiane przez Pythona. Utwórzmy *view* zgodnie z sugestią komentarza. Najprostszy widok może wyglądać tak: diff --git a/pl/dynamic_data_in_templates/README.md b/pl/dynamic_data_in_templates/README.md index 67abea161ae..bb9bb431953 100755 --- a/pl/dynamic_data_in_templates/README.md +++ b/pl/dynamic_data_in_templates/README.md @@ -34,7 +34,7 @@ Ale co dalej? Aby pobrać aktualne posty na blogu z modelu `Post`, potrzebujemy Powinnaś być już zaznajomiona z zasadą działania obiektów typu QuerySet. Rozmawiałyśmy o tym w rozdziale [ORM Django (obiekty QuerySets)](../django_orm/README.md). -Więc teraz chcemy opublikować posty na blogu posortowane według daty publikacji (`published_date`), prawda? Zrobiliśmy to już w rozdziale QuerySets! +Więc teraz chcemy opublikować posty na blogu posortowane według daty publikacji (`published_date`), prawda? Zrobiłyśmy to już w rozdziale QuerySets! {% filename %}blog/views.py{% endfilename %} @@ -60,7 +60,7 @@ Ostatnią częścią, której nam brakuje, jest przekazanie QuerySetu `posts` do Zauważ, że tworzymy *zmienną* dla naszego QuerySetu: `posts`. Potraktuj ją jako nazwę naszego QuerySetu. Od tej pory będziemy odnosić się do niej tylko za pomocą tej nazwy. -W funkcji `render` mamy jeden parametr `request` (wszystko, co otrzymujemy od użytkownika za pośrednictwem Internetu) i inny podający plik szablonu (`'blog/post_list.html'`). Ostatni parametr, który wygląda tak: `{}` jest miejscem, w którym możemy dodać parę rzeczy do wykorzystania w szablonie. Musimy nadać im nazwy (ale póki co będziemy trzymać się nazwy `'posts'`). :) Powinno to wyglądać tak: `{'posts': posts}`. Zwróć uwagę, że ta część przed `:` jest stringiem; powinnaś go wziąć w cudzysłów:`'`. +W funkcji `render` mamy jeden parametr `request` (wszystko, co otrzymujemy od użytkownika za pośrednictwem Internetu) i inny podający plik szablonu (`'blog/post_list.html'`). Ostatni parametr, który wygląda tak: `{}` jest miejscem, w którym możemy dodać parę rzeczy do wykorzystania w szablonie. Musimy nadać im nazwy (ale póki co będziemy trzymać się nazwy `'posts'`). :) Powinno to wyglądać tak: `{'posts': posts}`. Zwróć uwagę, że ta część przed `:` jest stringiem; powinnaś wziąć ją w cudzysłów:`'`. Zatem ostatecznie nasz plik `blog/views.py` powinien wyglądać następująco: diff --git a/pl/extend_your_application/README.md b/pl/extend_your_application/README.md index 5bcff85511f..445cd35b1c9 100755 --- a/pl/extend_your_application/README.md +++ b/pl/extend_your_application/README.md @@ -10,7 +10,7 @@ Pierwszą rzeczą, której nasz blog potrzebuje, to strona wyświetlająca pojed Mamy już model `Post`, więc nie musimy już dodawać niczego do `models.py`. -## Tworzenie linku w szablonie +## Tworzenie szablonu odnośnika do detali wpisu na blogu Zaczniemy od dodania linku w pliku `blog/templates/blog/post_list.html`. Póki co powinien on wyglądać następująco: {% filename %}blog/templates/blog/post_list.html{% endfilename %} @@ -38,13 +38,13 @@ Zaczniemy od dodania linku w pliku `blog/templates/blog/post_list.html`. Póki c

{{ post.title }}

``` -{% raw %}Czas by wyjaśnić co oznacza tajemnicze `{% url 'post_detail' pk=post.pk %}`. Jak można podejrzewać, zapis `{% %}` oznacza, że używamy tagów szablonu Django. Tym razem używamy takiego, który generuje dla nas adres URL!{% endraw %} +{% raw %}Czas wyjaśnić, co oznacza tajemnicze `{% url 'post_detail' pk=post.pk %}`. Jak można podejrzewać, zapis `{% %}` oznacza, że używamy tagów szablonu Django. Tym razem używamy takiego, który generuje dla nas adres URL!{% endraw %} Fragment `post_detail` oznacza, że Django będzie oczekiwał URL w `blog/urls.py` o nazwie name=post_detail -A co z `pk=post.pk`? `pk` jest skrótem od primary key (ang. klucz podstawowy), który jest unikalną nazwą dla każdego rekordu bazy danych. Ponieważ nie ustaliłyśmy czym jest klucz podstawowy w naszym modelu `Post`, Django stworzyło taki klucz dla nas (standardowo jest to liczba, która rośnie o jeden przy każdym kolejnym rekordzie, np. 1, 2, 3) i dodało go jako pole pod nazwą `pk` do każdego naszego posta. Możemy dostać się do klucza podstawowego przez wpisanie `post.pk`, tak samo jak otrzymuje dostęp do innych pól (`title`, `author`, itd.) w naszym obiekcie `Post`! +A co z `pk=post.pk`? `pk` jest skrótem od primary key (ang. klucz podstawowy), który jest unikalną nazwą dla każdego rekordu bazy danych. Ponieważ nie ustaliłyśmy, czym jest klucz podstawowy w naszym modelu `Post`, Django stworzyło taki klucz dla nas (standardowo jest to liczba, która rośnie o jeden przy każdym kolejnym rekordzie, np. 1, 2, 3) i dodało go jako pole pod nazwą `pk` do każdego naszego posta. Możemy dostać się do klucza podstawowego przez wpisanie `post.pk`, tak samo jak otrzymujemy dostęp do innych pól (`title`, `author`, itd.) w naszym obiekcie `Post`! -Teraz, gdy wejdziemy na adres http://127.0.0.1:8000/ ujrzymy błąd (co było do przewidzenia, bo nie mamy jeszcze ustawionego adresu URL ani widoku *view* dla `post_detail`). Będzie to wyglądać tak: +Teraz, gdy wejdziemy na adres http://127.0.0.1:8000/, ujrzymy błąd (co było do przewidzenia, bo nie mamy jeszcze ustawionego adresu URL ani widoku *view* dla `post_detail`). Będzie to wyglądać tak: ![Błąd NoReverseMatch](images/no_reverse_match2.png) @@ -72,7 +72,7 @@ Ta część `^post/(?P\d+)/$` wygląda strasznie, ale bez obaw – wyjaśnim - zaczyna się od `^` jeszcze raz - "początek". - `post/` po prostu oznacza, że po rozpoczęciu, adres URL powinien zawierać słowo **post** i **/**. Jak na razie dobrze idzie. -- `(?P\d+)` - ta część jest trudniejsza. Oznacza ona, że Django pobierze wszystko, co umieścisz w tym miejscu i przekaże to do widoku w zmiennej o nazwie `pk`. (Zauważ, że odpowiada to nazwie jaką nadaliśmy zmiennej zawierającej klucz podstawowy powyżej w `blog/templates/blog/post_list.html`!) `\d` informuje nas, że klucz ten może zawierać tylko cyfry, nie litery (czyli wszystko pomiędzy 0 a 9). `+` oznacza, że to musi być jedna lub więcej cyfr. Czyli coś takiego: `http://127.0.0.1:8000/post//` nie jest poprawne, ale już `http://127.0.0.1:8000/post/1234567890/` jest jak najbardziej w porządku! +- `(?P\d+)` - ta część jest trudniejsza. Oznacza ona, że Django pobierze wszystko, co umieścisz w tym miejscu i przekaże to do widoku w zmiennej o nazwie `pk`. (Zauważ, że odpowiada to nazwie, jaką nadaliśmy zmiennej zawierającej klucz podstawowy powyżej w `blog/templates/blog/post_list.html`!) `\d` i informuje nas, że klucz ten może zawierać tylko cyfry, nie litery (czyli wszystko pomiędzy 0 a 9). `+` oznacza, że to musi być jedna lub więcej cyfr. Czyli coś takiego: `http://127.0.0.1:8000/post//` nie jest poprawne, ale już `http://127.0.0.1:8000/post/1234567890/` jest jak najbardziej w porządku! - `/` – potrzebujemy ponownie **/**. - `$` – "koniec"! @@ -174,7 +174,7 @@ Hura! Działa! # Czas na wdrożenie! -Dobrze byłoby sprawdzić czy Twoja strona dalej będzie dobrze działać na PythonAnywhere, prawda? Spróbuj ponownie wdrożyć. +Dobrze byłoby sprawdzić, czy Twoja strona dalej będzie dobrze działać na PythonAnywhere, prawda? Spróbuj ją ponownie wdrożyć. {% filename %}command-line{% endfilename %} @@ -209,7 +209,7 @@ Zacznij od aktywacji swojego virtualenva, jeżeli nie jest on jeszcze aktywny (P [...] -Komenda `manage.py collectstatic` jest trochę podobna do `manage.py migrate`. Wcześniej dokonałyśmy jakichś zmian w naszym kodzie, a teraz informujemy Django, by *zastosował* te zmiany, albo w kolekcji plików statycznych na serwerze, albo w bazie danych. +Komenda `manage.py collectstatic` jest trochę podobna do `manage.py migrate`. Wcześniej dokonałyśmy jakichś zmian w naszym kodzie, a teraz informujemy Django, by *zastosował* te zmiany, albo w kolekcji plików statycznych na serwerze albo w bazie danych. W każdym wypadku jesteśmy gotowe przejść do podstrony [Web tab](https://www.pythonanywhere.com/web_app_setup/) i wcisnąć **Reload** (ang. odśwież). diff --git a/pl/how_the_internet_works/README.md b/pl/how_the_internet_works/README.md index 9f046fa6f4b..62c601d5749 100755 --- a/pl/how_the_internet_works/README.md +++ b/pl/how_the_internet_works/README.md @@ -1,28 +1,28 @@ -# Jak działa internet +# Jak działa internet? > Dla czytelniczek w domu: ten rozdział jest również omówiony w wideo [How the Internet Works](https://www.youtube.com/watch?v=oM9yAA09wdc). > > Niniejszy rozdział został zainspirowany prelekcją "Jak działa internet" Jessiki McKellar (http://web.mit.edu/jesstess/www/). -Możemy się założyć, że używasz go każdego dnia. Ale czy naprawdę wiesz co się dzieje, gdy wpisujesz w przeglądarce adres https://djangogirls.org i wciskasz `enter`? +Możemy się założyć, że używasz go każdego dnia. Ale czy naprawdę wiesz, co się dzieje, gdy wpisujesz w przeglądarce adres https://djangogirls.org i wciskasz `enter`? -Aby zrozumieć jak działa internet powinnaś najpierw dowiedzieć się czym tak naprawdę jest strona internetowa, a jest ona tylko zbiorem plików zapisanych na dysku twardym. Tak samo jak twoje zdjęcia, muzyka czy filmy. Aczkolwiek strony internetowe różnią się od nich tym, że zawierają kod komputerowy zwany HTML. +Aby zrozumieć, jak działa internet, powinnaś najpierw dowiedzieć się, czym tak naprawdę jest strona internetowa - a jest ona tylko zbiorem plików zapisanych na dysku twardym. Tak samo jak Twoje zdjęcia, muzyka czy filmy. Aczkolwiek strony internetowe różnią się od nich tym, że zawierają kod komputerowy zwany HTML. Jeśli nie miałaś wcześniej do czynienia z programowaniem, może być Ci na początku trudno zrozumieć HTML, ale przeglądarki internetowe (takie jak Chrome, Safari, Firefox itd.) uwielbiają go. Zostały one zaprojektowane po to, by czytać ten kod, przetwarzać go i postępować zgodnie z jego instrukcjami. Prezentują pliki, z których składa się Twoja strona - by wyglądała dokładnie tak jak Ty chcesz. Tak jak w przypadku każdego innego pliku, musimy umiejscowić pliki HTML na dysku twardym. Do przechowywania plików HTML używamy specjalnych, potężnych komputerów zwanych *serwerami (ang. servers)*. Serwery nie posiadają monitorów, myszy ani klawiatur, ponieważ ich głownym celem jest przechowywanie danych i serwowanie ich. Dlatego są one nazywane *serwerami* -- ponieważ służą do *serwowania* danych. -Ok, ale pewnie chciałabyś wiedzieć jak wygląda internet? +Ok, ale pewnie chciałabyś wiedzieć, jak wygląda internet? Narysowaliśmy Ci schemat Internetu! Wygląda tak: ![Rysunek 1.1](images/internet_1.png) -Wygląda dość chaotycznie, prawda? W rzeczywistości jest to sieć połączonych między sobą maszyn (wspomnianych wyżej *serverów*). Setki tysięcy maszyn! Wiele, wiele kilometrów kabli na całym świecie! Możesz wejść na stronę Submarine Cable Map (http://submarinecablemap.com) i sama zobaczyć jak skomplikowana jest ta sieć. Oto zrzut ekranu ze strony internetowej: +Wygląda dość chaotycznie, prawda? W rzeczywistości jest to sieć połączonych między sobą maszyn (wspomnianych wyżej *serverów*). Setki tysięcy maszyn! Wiele, wiele kilometrów kabli na całym świecie! Możesz wejść na stronę Submarine Cable Map (http://submarinecablemap.com) i sama zobaczyć, jak skomplikowana jest ta sieć. Oto zrzut ekranu ze strony internetowej: ![Rysunek 1.2](images/internet_3.png) -To fascynujące, prawda? Ale oczywiście niemożliwe jest stworzenie bezpośredniego połączenia kablowego między każdym komputerem w internecie. Więc aby dostać się do maszyny dostępnej w internecie (na przykład tej, na której zapisane jest https://djangogirls.org) potrzebujemy wykonać zapytanie przechodzące przez wiele, wiele różnych maszyn. +To fascynujące, prawda? Ale oczywiście niemożliwe jest stworzenie bezpośredniego połączenia kablowego między każdym komputerem w internecie. Więc aby dostać się do maszyny dostępnej w internecie (na przykład tej, na której zapisane jest https://djangogirls.org), potrzebujemy wykonać zapytanie przechodzące przez wiele, wiele różnych maszyn. Wygląda to tak: @@ -42,6 +42,6 @@ Listy muszą spełniać konkretne warunki, żeby zostały poprawnie doręczone: Tak więc, ogólnie rzecz ujmując, jeśli chcesz mieć swoją stronę internetową musisz mieć *serwer* (komputer), gdzie będzie ona funkcjonować. Gdy *serwer* odbiera przychodzące *żądania* (Twój list), wysyła Ci w odpowiedzi Twoją stronę (kolejny list). -Zapytasz pewnie co robi Django, skoro masz przed sobą tutorial Django. Kiedy odpowiadasz na żądanie, nie chcesz aby każdy dostawał tę samą odpowiedź, prawda? Zdecydowanie lepiej jest jeśli listy są spersonalizowane i skierowane do konkretnej osoby, do tej, która napisała do Ciebie. Django pomaga Ci w tworzeniu tych spersonalizowanych, interesujących listów. :) +Zapytasz pewnie co robi Django, skoro masz przed sobą tutorial Django? Kiedy odpowiadasz na żądanie, nie chcesz aby każdy dostawał tę samą odpowiedź, prawda? Zdecydowanie lepiej jest, jeśli listy są spersonalizowane i skierowane do konkretnej osoby, do tej, która napisała do Ciebie. Django pomaga Ci w tworzeniu tych spersonalizowanych, interesujących listów. :) Wystarczy teorii, zabieramy się za tworzenie! \ No newline at end of file diff --git a/pl/html/README.md b/pl/html/README.md index 7d3fcca83a1..d95d086adf9 100755 --- a/pl/html/README.md +++ b/pl/html/README.md @@ -1,6 +1,6 @@ -# Wprowadzenie do HTMLa +# Wprowadzenie do HTML-a -Zastanawiasz się czym jest szablon? +Zastanawiasz się, czym jest szablon? Szablon to plik, którego używamy do prezentacji informacji w zwięzłej formie. Używając analogii - do pisania listów również możesz użyć szablonu. Każdy list ma inną treść i adres, ale każdy z nich ma taką samą strukturę. @@ -23,7 +23,7 @@ Szablony są zapisywane w katalogu `blog/templates/blog`. Zacznij więc od stwor └───blog -(być może zastanawiasz się, dlaczego tworzymy dwa katalogi o nazwie `blog` - jak się niebawem dowiesz, to po prostu użyteczna konwencja nazewnictwa. Ułatwia życie, gdy sprawy stają się bardziej skomplikowane.) +(Być może zastanawiasz się, dlaczego tworzymy dwa katalogi o nazwie `blog` - jak się niebawem dowiesz, to po prostu użyteczna konwencja nazewnictwa. Ułatwia życie, gdy sprawy stają się bardziej skomplikowane.) A teraz stwórz plik `post_list.html` (na razie niech będzie pusty) wewnątrz katalogu `blog/templates/blog`. @@ -33,7 +33,7 @@ Popatrz, jak Twoja strona wygląda teraz: http://127.0.0.1:8000/ ![Rysunek 11.1](images/step1.png) -Nie ma błędu! Gratulacje :) Niestety, twoja aplikacja nie wyświetla niczego poza pustą stroną, ponieważ Twój szablon również jest pusty. Naprawmy to. +Nie ma błędu! Gratulacje! :) Niestety, twoja aplikacja nie wyświetla niczego poza pustą stroną, ponieważ Twój szablon również jest pusty. Naprawmy to. Dodaj następującą treść w pliku z szablonem: @@ -99,7 +99,7 @@ Teraz nieco się pobawmy i spróbujmy dostosować nasz szablon! Oto kilka znaczn * `

Tytuł

` dla twojego najbardziej znaczącego nagłówka * `

Podtytuł

` dla nagłówka niższego poziomu -* `

pod-podtytuł

` …i tak dalej aż do `
` +* `

pod-podtytuł

` … i tak dalej aż do `
` * `

akapit tekstu

` * `tekst` dodaje wyróżnienie twojego tekstu * `text` jeszcze mocniej wyróżnia twój tekst @@ -146,7 +146,7 @@ Daje nam to taki efekt: ![Rysunek 11.4](images/step6.png) -Hura! Ale jak do tej pory, nasz szablon wyświetla dokładnie **tą samą treść**. Tymczasem wspominałyśmy wcześniej, że szablony umożliwiają nam wyświetlenie **różnych** treści w **takim samym formacie**. +Hura! Ale jak do tej pory, nasz szablon wyświetla dokładnie **tę samą treść**. Tymczasem wspominałyśmy wcześniej, że szablony umożliwiają nam wyświetlenie **różnych** treści w **takim samym formacie**. Chcemy wyświetlić prawdziwe wpisy dodane w naszym panelu admina Django - i tym się teraz zajmiemy. @@ -197,7 +197,7 @@ Jak już wszystko to zrobimy, możemy wysłać (push) nasze zmiany na Githuba: ### Prześlij nową wersję kodu do PythonAnywhere i ponownie załaduj swoją stronę -* Otwórz [stronę konsol na PythonAnywhere](https://www.pythonanywhere.com/consoles/) i przejdź do swojej **Bash console** (czyli po polsku "konsoli Bash") albo otwórz nową. Wpisz do niej: +* Otwórz [stronę konsoli na PythonAnywhere](https://www.pythonanywhere.com/consoles/) i przejdź do swojej **Bash console** (czyli po polsku "konsoli Bash") albo otwórz nową. Wpisz do niej: {% filename %}command-line{% endfilename %} @@ -208,7 +208,7 @@ Jak już wszystko to zrobimy, możemy wysłać (push) nasze zmiany na Githuba: (Pamiętaj by podmienić `` na twoją właściwą nazwę użytkownika PythonAnywhere, bez nawiasów ostrokątnych). -I obserwuj jak Twój kod się ściąga. Jeśli chcesz sprawdzić czy już się pobrał, możesz przejść do zakładki **Files tab** i przeglądnąć swój kod na PythonAnywhere. +I obserwuj jak Twój kod się ściąga. Jeśli chcesz sprawdzić czy już się pobrał, możesz przejść do zakładki **Files tab** i podejrzeć swój kod na PythonAnywhere. * Na koniec przeskocz do zakładki [Web tab](https://www.pythonanywhere.com/web_app_setup/) i naciśnij **Reload**. diff --git a/pl/intro_to_command_line/README.md b/pl/intro_to_command_line/README.md index 8960f190ccf..9466784edc4 100755 --- a/pl/intro_to_command_line/README.md +++ b/pl/intro_to_command_line/README.md @@ -22,7 +22,7 @@ Aby zacząć nasze eksperymenty, musimy najpierw otworzyć nasz wiersz poleceń. Przejdź do menu Start → System → Wiersz polecenia. -> Na starszych wersjach Windowsa szukaj w menu Start → Wszystkie programy → Akcesoria → Wiersz polecenia. +> Na starszych wersjach Windowsa szukaj w menu Start → Wszystkie programy → Akcesoria → Wiersz poleceń. @@ -34,11 +34,11 @@ Przejdź do Aplikacje → Narzędzia → Terminal. -Prawdopodobnie gdzieś w menu Aplikacje → Akcesoria → Terminal, ale to może zależeć od wersji Twojego systemu. Jeżeli tam nie znajdziesz, po prostu zapytaj Google. :) +Prawdopodobnie gdzieś w menu Aplikacje → Akcesoria → Terminal, ale to może zależeć od wersji Twojego systemu. Jeżeli tam nie znajdziesz, po prostu zapytaj Google'a. :) -## Prompt +## Znak zachęty Teraz powinnaś zobaczyć białe lub czarne okno, które czeka na Twoje polecenia. @@ -165,7 +165,7 @@ Co znajduje się w środku? Fajnie byłoby się tego dowiedzieć. Sprawdźmy: {% filename %}command-line{% endfilename %} > dir - Directory of C:\Users\olasitarska + Directory of C:\Users\olasitarska 05/08/2014 07:28 PM Applications 05/08/2014 07:28 PM Desktop 05/08/2014 07:28 PM Downloads diff --git a/pl/python_installation/instructions.md b/pl/python_installation/instructions.md index 4c9416f08f4..e02927f3997 100755 --- a/pl/python_installation/instructions.md +++ b/pl/python_installation/instructions.md @@ -2,17 +2,17 @@ > > Niniejszy podrozdział powstał w oparciu o kurs Geek Girls Carrots (https://github.com/ggcarrots/django-carrots) -Django jest napisane w Pythonie. Musimy posiadać Pythona by zrobić cokolwiek w Django. Zacznijmy od jego instalacji! Chcemy zainstalować Python 3.6, więc jeżeli posiadasz jakąkolwiek wcześniejszą wersję, będziesz musiała ją uaktualnić. +Django jest napisane w Pythonie. Musimy posiadać Pythona, by zrobić cokolwiek w Django. Zacznijmy od jego instalacji! Chcemy zainstalować Python 3.6, więc jeżeli posiadasz jakąkolwiek wcześniejszą wersję, będziesz musiała ją uaktualnić. -Na początku sprawdź, czy twój komputer działa na 32-bitowej czy 64-bitowej wersji Windowsa, poprzez wciśnięcie kombinacji przycisków Windows + Pause/Break, które otworzą Właściwości systemu i sprawdzenie linii "Typ systemu". Możesz ściągnąć Pythona dla Windowsa ze strony https://www.python.org/downloads/windows/. Kliknij w link "Latest Python 3 Release - Python x.x.x". Jeżeli twój komputer pracuje na **64-bitowej** wersji Windowsa, ściągnij **Windows x86-64 executable installer**. W innym wypadku ściągnij **Windows x86 executable installer**. Po ściągnięciu instalatora, powinnaś go uruchomić (klikając dwukrotnie w niego) i postępować według wyświetlanych instrukcji. +Na początku sprawdź, czy twój komputer działa na 32-bitowej czy 64-bitowej wersji Windowsa, poprzez wciśnięcie kombinacji przycisków Windows + Pause/Break, które otworzą Właściwości systemu - sprawdź w linii "Typ systemu". Możesz ściągnąć Pythona dla Windowsa ze strony https://www.python.org/downloads/windows/. Kliknij w link "Latest Python 3 Release - Python x.x.x". Jeżeli twój komputer pracuje na **64-bitowej** wersji Windowsa, ściągnij **Windows x86-64 executable installer**. W innym wypadku ściągnij **Windows x86 executable installer**. Po ściągnięciu instalatora, powinnaś go uruchomić (klikając dwukrotnie w niego) i postępować według wyświetlanych instrukcji. Na jedną rzecz będziesz musiała uważać: Podczas instalacji zauważysz ekran oznaczony jako "Setup". Upewnij się, że zaznaczyłaś checkbox "Add Python 3.6 to PATH" oraz kliknęłaś "Install Now", tak jak tutaj: ![Nie zapomnij dodać Pythona do ścieżki systemowej (ang. Path)](../python_installation/images/python-installation-options.png) -W nadchodzących krokach, będziesz używać Wiersz polecenia Windowsa (o której też Ci zaraz opowiemy). Na teraz, jeżeli będziesz musiała wpisać jakiekolwiek polecenie, przejdź do menu Start → System → Wiersz polecenia. Możesz też przytrzymać klawisz Windows i nacisnąć "R" - pojawi się Tobie okno "Uruchamianie". W celu otworzenia Wiersza polecenia, wpisz "cmd" i wciśnij przycisk enter w oknie "Uruchamianie". (Na nowszych wersjach Windowsa możesz być zmuszona by wyszukać "Wiersz polecenia", ponieważ może być on ukryty.) +W nadchodzących krokach, będziesz używać "Wiersz poleceń" Windowsa (o której też Ci zaraz opowiemy). Na teraz, jeżeli będziesz musiała wpisać jakiekolwiek polecenie, przejdź do menu Start → System → Wiersz polecenia. Możesz też przytrzymać klawisz Windows i nacisnąć "R" - pojawi się Tobie okno "Uruchamianie". W celu otworzenia Wiersza polecenia, wpisz "cmd" i wciśnij przycisk enter w oknie "Uruchamianie". (Na nowszych wersjach Windowsa możesz być zmuszona by wyszukać "Wiersz polecenia", ponieważ może być on ukryty.) ![Wpisz "cmd" w oknie "Uruchom""](../python_installation/images/windows-plus-r.png) @@ -99,7 +99,7 @@ Sprawdź, czy instalacja zakończyła się pomyślnie - otwórz wiersz poleceń Python 3.6.1 -**Uwaga:** Jeżeli pracujesz na Windowsie i dostajesz wiadomość o błędzie, że `python3` nie został znaleziony, spróbuj użyć `python` (without `3`) oraz sprawdź czy być może w taki sposób uruchomisz Pythona 3.6. +**Uwaga:** Jeżeli pracujesz na Windowsie i dostajesz wiadomość o błędzie, że `python3` nie został znaleziony, spróbuj użyć `python` (bez `3`) oraz sprawdź, czy być może w taki sposób uruchomisz Pythona 3.6. * * * diff --git a/pl/python_introduction/README.md b/pl/python_introduction/README.md index 58301aa481c..d3bdbedade7 100755 --- a/pl/python_introduction/README.md +++ b/pl/python_introduction/README.md @@ -8,7 +8,7 @@ Napiszmy jakiś kod! ## Wiersz poleceń Pythona -> Dla czytelniczek w domu: tą część uwzględnia wideo [Python Basics: Integers, Strings, Lists, Variables and Errors](https://www.youtube.com/watch?v=MO63L4s-20U). +> Dla czytelniczek w domu: tę część uwzględnia wideo [Python Basics: Integers, Strings, Lists, Variables and Errors](https://www.youtube.com/watch?v=MO63L4s-20U). Aby rozpocząć zabawę z Pythonem, musisz otworzyć jego *wiersz poleceń* na swoim komputerze. Powinnaś już wiedzieć, jak to zrobić - nauczyłyśmy się tego w rozdziale [Wprowadzenie do interfejsu wiersza poleceń](../intro_to_command_line/README.md). @@ -54,9 +54,9 @@ By wykonać potęgowanie, powiedzmy podnieść 2 do potęgi 3, musimy wpisać: { Pobaw się tym przez chwilę, a potem wróć tutaj. :) -Ja widzisz, Python jest świetnym kalkulatorem. Jeżeli zastanawiasz się, co możesz z ni jeszcze zrobić… +Ja widzisz, Python jest świetnym kalkulatorem. Jeżeli zastanawiasz się, co możesz z nim jeszcze zrobić… -## Stringi +## Tekstowy typ danych (string) A jakby tak wpisać swoje własne imię? Wpisz swoje imię używając cudzysłowów, w ten sposób: @@ -142,7 +142,7 @@ Są to podstawy każdego języka programowania, jakiego przyjdzie Ci się uczyć ## Błędy -Spróbujmy czegoś nowego. Czy możemy sprawdzić długość liczby w taki sam sposób jak długość naszego imienia? Wpisz `len(304023)` i wciśnij `enter`: +Spróbujmy czegoś nowego. Czy możemy sprawdzić długość liczby w taki sam sposób, jak długość naszego imienia? Wpisz `len(304023)` i wciśnij `enter`: {% filename %}{{ warning_icon }} command-line{% endfilename %} @@ -153,7 +153,7 @@ Traceback (most recent call last): TypeError: object of type 'int' has no len() ``` -Dostałyśmy nasz pierwszy błąd! Ikona {{ warning_icon }} to sposób, w jaki będziemy Ciebie informować, że kod, który zaraz wykonasz nie powinien zadziałać poprawnie. Popełnianie błędów (nawet intencjonalnie) to ważna część nauki! +Dostałyśmy nasz pierwszy błąd! Ikona {{ warning_icon }} to sposób, w jaki będziemy Ciebie informować, że kod, który zaraz wykonasz, nie powinien zadziałać poprawnie. Popełnianie błędów (nawet intencjonalnie) to ważna część nauki! Komunikat mówi nam, że obiekty typu "int" (liczby całkowite, ang. integer) nie mają długości. Zatem co możemy zrobić? Może mogłybyśmy przekazać naszą liczbę jako string? Stringi mają ustaloną długość, zgadza się? @@ -238,7 +238,7 @@ NameError: name 'masto' is not defined Błąd! Jak widzisz, Python ma różne rodzaje błędów, a ten nosi nazwę **NameError**. Python zwróci Ci taki błąd, gdy będziesz próbowała używać nazwy, która nie została jeszcze utworzona. Gdybyś w przyszłości natrafiła na niego, sprawdź w swoim kodzie czy nie popełniłaś literówek w nazwach zmiennych. -Poświęć chwilę czasu na zabawę i przekonaj się co możesz z tym zrobić! +Poświęć chwilę czasu na zabawę i przekonaj się, co możesz z tym zrobić! ## Funkcja print @@ -254,13 +254,13 @@ Spróbuj tego: Maria ``` -Kiedy wpisujesz po prostu `imie`, interpreter Pythona zwraca *odwzorowanie* stringu będącego wartością zmiennej 'imie', czyli litery M-a-r-i-a zamknięte w pojedynczym cudzysłowie ''. Natomiast gdy napiszesz `print(imie)`, Python wypisze zawartość zmiennej na ekran, bez żadnego cudzysłowu, co wygląda lepiej. +Kiedy wpisujesz po prostu `imie`, interpreter Pythona zwraca *odwzorowanie* stringa będącego wartością zmiennej 'imie', czyli litery M-a-r-i-a zamknięte w pojedynczym cudzysłowie''. Natomiast gdy napiszesz `print(imie)`, Python wypisze zawartość zmiennej na ekran, bez żadnego cudzysłowu, co wygląda lepiej. -Jak się później przekonamy, `print()` jest szczególnie użyteczny, gdy chcemy wypisać coś z wnętrza funkcji, lub gdy zechcemy wypisać wartości w kilku wierszach. +Jak się później przekonamy, `print()` jest szczególnie użyteczny, gdy chcemy wypisać coś z wnętrza funkcji lub gdy zechcemy wypisać wartości w kilku wierszach. ## Listy -Oprócz stringów i liczb całkowitych, Python dysponuje bogactwem różnych typów obiektów. Teraz zapoznamy się z typem zwanym **listą**. Listy są dokładnie tym, co myślisz: obiektami, które są listami innych obiektów. :) +Oprócz stringów i liczb całkowitych, Python dysponuje szeregiem różnych typów obiektów. Teraz zapoznamy się z typem zwanym **listą**. Listy są dokładnie tym, co myślisz: obiektami, które są listami innych obiektów. :) Śmiało, stwórzmy listę: @@ -340,7 +340,7 @@ Jeśli chcesz wyświetlić tylko pierwszą liczbę, możesz to uczynić używaj Jak widzisz, możesz uzyskać dostęp do każdego z elementów Twojej listy za pomocą jej nazwy oraz numeru indeksu wewnątrz nawiasów kwadratowych. -By skasować coś z twojej listy, musisz użyć **indeksów**, których nauczyłyśmy się powyżej i metody `pop()`. Spróbujmy zobaczyć jak to działa na przykładzie i powtórzmy sobie to, czego się nauczyłyśmy wyżej. Usuńmy pierwszy element z naszej listy. +By skasować coś z twojej listy, musisz użyć **indeksów**, których nauczyłyśmy się powyżej i metody `pop()`. Spróbujmy zobaczyć, jak to działa na przykładzie i powtórzmy sobie to, czego się nauczyłyśmy wyżej. Usuńmy pierwszy element z naszej listy. {% filename %}command-line{% endfilename %} @@ -476,7 +476,7 @@ Gotowa na następną część? :) ## Porównywanie rzeczy -> Dla czytelniczek w domu: tą część uwzględnia wideo [Python Basics: Comparisons](https://www.youtube.com/watch?v=7bzxqIKYgf4). +> Dla czytelniczek w domu: tę część uwzględnia wideo [Python Basics: Comparisons](https://www.youtube.com/watch?v=7bzxqIKYgf4). Istotną częścią programowania jest porównywanie różnych rzeczy. Co najłatwiej porównać? Liczby oczywiście. Zobaczmy, jak to działa: @@ -590,7 +590,7 @@ Gratulacje! Wartości logiczne są jedną z najfajniejszych możliwości w progr # Zapisujemy! -> Dla czytelniczek w domu: tą część uwzględnia wideo [Python Basics: Saving files and "If" statement](https://www.youtube.com/watch?v=dOAg6QVAxyk). +> Dla czytelniczek w domu: tę część uwzględnia wideo [Python Basics: Saving files and "If" statement](https://www.youtube.com/watch?v=dOAg6QVAxyk). Do tej pory pisałyśmy cały nasz kod Pythona w interpreterze, co zmusza nas do pisania linijka po linijce. Prawdziwe programy są zapisywane w plikach i uruchamiane przez **interpreter** lub **kompilator** naszego języka programowania. Dotąd uruchamiałyśmy nasze programy w **interpreterze** Pythona, wprowadzając za każdym razem najwyżej jedną linijkę kodu. Ale w następnych zadaniach będziemy potrzebowały dodać więcej niż jeden wiersz kodu, więc musimy szybko: @@ -652,7 +652,7 @@ W Linuksie będzie tak (słowo "Desktop" może zostać przetłumaczone na polski -W wierszu polecań Windows będzie tak: +W wierszu poleceń Windows będzie tak: {% filename %}command-line{% endfilename %} @@ -694,7 +694,7 @@ Super! Właśnie uruchomiłaś z pliku swój pierwszy program w Pythonie. Wspani Teraz możemy przejść do niezwykle istotnego narzędzia w programowaniu: -## If…elif…else +## If… elif… else Dużo różnych rzeczy w kodzie powinno być uruchamiane tylko wtedy, kiedy zostaną spełnione określone warunki. Dlatego Python posiada coś, co nazywa się **instrukcjami warunkowymi**. @@ -706,7 +706,7 @@ Zastąp kod w pliku **python_intro.py** następującym: if 3 > 2: ``` -Gdybyśmy to teraz zapisały i uruchomiły, pojawił się błąd podobny do poniższego: +Gdybyśmy to teraz zapisały i uruchomiły, pojawiłby się błąd podobny do poniższego: {% filename %}{{ warning_icon }} command-line{% endfilename %} @@ -783,7 +783,7 @@ i uruchommy go: Widzisz co się tutaj wydarzyło? `elif` pozwala Ci na dodanie dodatkowego warunku, jeśli poprzedni warunek nie został spełniony. -Po początkowej instrukcji `if` możesz dodać tyle instrukcji `elif` ile tylko Ci się podoba. Na przykład: +Po początkowej instrukcji `if` możesz dodać tyle instrukcji `elif`, ile tylko Ci się podoba. Na przykład: {% filename %}python_intro.py{% endfilename %} @@ -808,12 +808,12 @@ Python zbada każdy warunek i wyświetli: {% filename %}command-line{% endfilename %} $ python3 python_intro.py - Idealnie, moge uslyszec wszystkie detale + "Perfect, I can hear all the details" ## Komentarze -Komentarze to linie zaczynające się od `#`. Możesz napisać cokolwiek będziesz chciała za `#`, a Python to zignoruje. Komentarze mogą uczyć twój kod łatwiejszym do zrozumienia przez innych. +Komentarze to linie zaczynające się od `#`. Możesz napisać cokolwiek będziesz chciała za `#`, a Python to zignoruje. Komentarze mogą spowodować, że twój kod będzie łatwiejszy do zrozumienia przez innych. Zobaczmy, jak to wygląda: @@ -826,7 +826,7 @@ if volume < 20 or volume > 80: print("That's better!") ``` -Nie musisz pisać komentarza dla każdej linijki kodu, ale pamiętaj, że są one pomocne by wytłumaczyć czemu program coś robi, lub by dodać podsumowanie gdy program robi coś skomplikowanego. +Nie musisz pisać komentarza dla każdej linijki kodu, ale pamiętaj, że są one pomocne, by wytłumaczyć, czemu program coś robi lub by dodać podsumowanie, gdy program robi coś skomplikowanego. ### Podsumowanie @@ -842,7 +842,7 @@ Czas na ostatnią część tego rozdziału! ## Twoje własne funkcje! -> Dla czytelniczek w domu: tą część uwzględnia wideo [Python Basics: Functions](https://www.youtube.com/watch?v=5owr-6suOl0). +> Dla czytelniczek w domu: tę część uwzględnia wideo [Python Basics: Functions](https://www.youtube.com/watch?v=5owr-6suOl0). Pamiętasz funkcje takie jak `len()`, które możesz uruchamiać w Pythonie? Dobra wiadomość: teraz nauczysz się pisać swoje własne funkcje! @@ -874,8 +874,8 @@ Uruchommy to teraz i sprawdźmy, co się stanie: Uwaga: Jeżeli to nie zadziała, nie ma powodu panikować! Wynik działania pozwoli Ci ustalić czemu: - Jeżeli dostajesz `NameError`, znaczy to że prawdopodobnie niepoprawnie coś wpisałaś, więc powinnaś sprawdzić czy użyłaś tej samej nazwy tworząc funkcję w `def hi():` oraz gdy ją wykonujesz w `hi()`. -- Jeżeli dostajesz `IndentationError`, sprawdź czy obydwie linie z `print` mają tą samą liczbę spacji/tabów na początku linii: Python wymaga, by kod wewnątrz funkcji był odpowiednio wcięty. -- Jeżeli nie ma żadnego wyniku działania, sprawdź czy ostanie `hi()` *nie* jest przypadkiem wcięte - jeżeli jest, to ta linia stała się również częścią funkcji, i nigdy nie zostanie wykonana. +- Jeżeli dostajesz `IndentationError`, sprawdź czy obydwie linie z `print` mają tę samą liczbę spacji/tabów na początku linii: Python wymaga, by kod wewnątrz funkcji był odpowiednio wcięty. +- Jeżeli nie ma żadnego wyniku działania, sprawdź czy ostanie `hi()` *nie* jest przypadkiem wcięte - jeżeli jest, to ta linia stała się również częścią funkcji i nigdy nie zostanie wykonana. Zbudujmy naszą pierwszą funkcję z parametrami. Posłużymy się wcześniejszym przykładem - funkcją, która wita każdego, kto ją uruchomi, wraz z imieniem: @@ -976,7 +976,7 @@ Gratulacje! Właśnie nauczyłaś się pisać funkcje :) ## Pętle -> Dla czytelniczek w domu: tą część uwzględnia wideo [Python Basics: For Loop](https://www.youtube.com/watch?v=aEA6Rc86HF0). +> Dla czytelniczek w domu: tę część uwzględnia wideo [Python Basics: For Loop](https://www.youtube.com/watch?v=aEA6Rc86HF0). To już ostatnia cześć. Prawda, że szybko poszło? :) diff --git a/pl/template_extending/README.md b/pl/template_extending/README.md index 145352858a3..edb182fb18d 100755 --- a/pl/template_extending/README.md +++ b/pl/template_extending/README.md @@ -2,7 +2,7 @@ Kolejną fajną rzeczą, którą Django daje Ci do dyspozycji, jest możliwość **rozszerzania szablonów**. Co to oznacza? To znaczy, że możesz używać tych samych części Twojego kodu HTML na różnych stronach Twojej aplikacji. -Szablony pomagają, gdy chcesz te same informacje lub ten sam układ strony użyć w wielu miejscach. W takim wypadku nie musisz się powtarzać w każdym pliku. I jak będziesz chciała zmienić cokolwiek, nie będziesz musiała tego zrobić w każdym szablonie, wystarczy tylko w jednym! +Szablony pomagają, gdy chcesz użyć te same informacje lub ten sam kod w wielu miejscach. W takim wypadku nie musisz się powtarzać w każdym pliku. I jak będziesz chciała zmienić cokolwiek, nie będziesz musiała tego zrobić w każdym szablonie, wystarczy tylko w jednym! ## Tworzenie szablonu bazowego @@ -102,7 +102,7 @@ To teraz zapisz `base.html` i otwórz ponownie swój `blog/templates/blog/post_l {% endfor %} ``` -Będziemy chciały użyć tych kliku linii jako części szablonu dla wszystkich bloków treści. Najwyższy czas dodać znaczniki blog w tym pliku! +Będziemy chciały użyć tych kliku linii jako części szablonu dla wszystkich bloków treści. Najwyższy czas dodać znaczniki block w tym pliku! {% raw %}Musimy zrobić to tak, by nasz znacznik block zgadzał się ze znacznikiem w pliku `base.html`. Chcesz też by zawierał on cały kod, który należy do twoich bloków treści. By to osiągnąć, umieść wszystko pomiędzy `{% block content %}` i `{% endblock %}`. O tak:{% endraw %} diff --git a/pl/whats_next/README.md b/pl/whats_next/README.md index 9af51a0b14d..9c2192f68d2 100755 --- a/pl/whats_next/README.md +++ b/pl/whats_next/README.md @@ -17,7 +17,7 @@ Później możesz spróbować zasobów wyszczególnionych poniżej. Są one bard - [Oficjalny tutorial Django](https://docs.djangoproject.com/en/1.11/intro/tutorial01/) - [Tutoriale New Coder](http://newcoder.io/tutorials/) - [Kurs Pythona na Code Academy](https://www.codecademy.com/en/tracks/python) -- [Kurs HTML i kurs CSS na Code Academy](https://www.codecademy.com/tracks/web) +- [Kurs HTML i kurs CSS na Codecademy](https://www.codecademy.com/tracks/web) - [Tutorial Django Carrots](https://github.com/ggcarrots/django-carrots) - [Książka Learn Python The Hard Way](http://learnpythonthehardway.org/book/) - [Wideolekcje Getting Started with Django](http://www.gettingstartedwithdjango.com/)