Skip to content

Commit

Permalink
Scenariusz projektu Django "Mały Bar – Pizza" - początek.
Browse files Browse the repository at this point in the history
  • Loading branch information
xinulsw committed Dec 25, 2016
1 parent 18843da commit aff50cd
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 17 deletions.
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Spis treści:
tools/index
cppqt/index
web/index
python/index
inne/index
inne/linki
galerie/index
Expand Down
6 changes: 6 additions & 0 deletions docs/python/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ znajdziesz w dokumentacji `Python101 <http://python101.readthedocs.org>`_,
która towarzyszy projektowi `"Koduj z Klasą" <http://www.ceo.org.pl/pl/koduj>`_
realizowanemu pod patronatem `Centrum Edukacji Obywatelskiej <http://www.ceo.org.pl/pl>`_.

.. toctree::
:maxdepth: 2
:numbered:

malybar/malybar.rst

Metryka
**********

Expand Down
Binary file added docs/python/malybar/img/django01.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/python/malybar/img/django02.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/python/malybar/img/django03.jpg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
160 changes: 143 additions & 17 deletions docs/python/malybar/malybar.rst
Original file line number Diff line number Diff line change
@@ -1,37 +1,163 @@
Django cz. 1
#############
Django
#######

Wstęp nt. czym jest Django
`Django <https://www.djangoproject.com/>`_ to napisany w Pythonie framework
przeznaczony do szybkiego tworzenia aplikacji internetowych.
Został zaprojektowany przez zespół doświadczonych praktyków w taki sposób,
żeby odciążyć programistę od wykonywania typowych, a jednocześnie uciążliwych czynności.
Zalety Django to szybkość, bezpieczeństwo i skalowalność. Inne cechy wymienione są
na polskiej stronie Wikipedii: `Django (framework) <https://pl.wikipedia.org/wiki/Django_(framework)>`_.

Przygotowanie środowiska
========================

Strona i aplikacja
==================
Do pracy z Django potrzebny jest przede wszystkim **interpreter Pythona 2.7.x**.
Jest on domyślnie obecny w systemach Linux. Natomiast w systemach Windows i Mac OS X
należy wejść na stronę `Donwload Python <https://www.python.org/downloads/>`_,
pobrać odpowiedni instalator (32- lub 64-bitowy) Pythona (**wersja 2.7.x**!)
i zainstalować. Opis instalacji znajdziesz na stronie `Interpreter Pythona <http://python101.readthedocs.io/pl/latest/env/windows.html#inerpreter-pythona>`_.

W wybranym katalogu, np. domowym, wydajemy polecenia:
Poza Pythonem potrzebny jest również instalator pakietów Pythona `pip`.
W systemach Linux wywodzących się z Debiana (Ubuntu, Linux Mint)
wystarczy wydać w terminalu polecenie:

.. code-block:: bash
$ django-admin stratproject moja_str
$ cd moja_strona
$ python manage.py runserver
~$ sudo apt install python-pip
W systemie Windows `pip` jest instalowany razem z interpreterem.
Korzystając z omawianego narzędzia wydajemy w konsoli tekstowej polecenie:

.. code-block:: bash
~$ sudo pip install virtualenv
Narzędzie `virtualenv` posłuży nam do przygotowania **wyizolowanego środowiska Pythona**,
zawierającego wybraną wersję Django. W konsoli wydajemy polecenia:

.. code-block:: bash
~$ virtualenv dj_10_4
~$ cd dj_10_4
~$ source ./bin/activate
~$ pip install Django==1.10.4
~$ pip install django-registration
Pierwsze polecenie tworzy katalog zawierający najważniejsze komponenty Pythona.
Nazwa :file:`dj_10_4` jest umowna, w założeniu ma być skrótem wskazującym wykorzystaną
wersję Django. Aby skorzystać z przygotowanego środowiska, należy
go zawsze na początku aktywować, wydając w utworzonym katalogu polecenie ``source ./bin/activate``.
Opuszczenie środowiska umożliwia komenda ``deactivate``.

Polecenia ``pip install ...`` instalują wskazaną wersję Django oraz dodatkową aplikację
ułatwiającą zarządzanie użytkownikami. Tak zainstalowane moduły będą dostępne
tylko w akywowanym środowisku.

**Ćwiczenie**

Zgodnie z powyższym opisem przygotuj samodzielnie wirtualne środowisko do pracy z Django.

.. tip::

Projektując aplikację będziemy często korzystać z poleceń wydawanych w katalogu
:file:`dj_10_4` w terminalu. Nie zamykaj więc okna terminala.

Projekt, serwer, aplikacja
==========================

Otwórz terminal, przejdź do katalogu z utworzonym wcześniej wirtualnym środowiskiem
:file:`dj_10_4` i aktywuj go. Utworzymy teraz projekt i uruchomimy serwer deweloperski.
Wydajemy polecenia:

.. code-block:: bash
~$ django-admin stratproject malybar
~$ cd malybar
~$ python manage.py runserver
Tyle wystarczy, żeby utworzyć szkielet serwisu i uruchomić serwer deweloperski,
który możemy wywołać wpisując w przeglądarce adres: ``127.0.0.1:8000``.
Serwer zatrzymujemy naciskając w terminalu skrót :kbd:`CTRL+C`.

[zrzut]
.. image:: img/django01.jpg

W ramach jednej strony (serwisu) może działać wiele aplikacji. Jedną utworzymy
poleceniem:
W ramach jednego projektu (serwisu internetowego) może działać wiele aplikacji.
Pierwszą utworzymy poleceniem:

.. code-block:: bash
$ python manage.py startapp moja_apl
~/malybar$ python manage.py startapp pizza
– w wyniku jego działania w katalogu :file:`pizza` powstanie szkielt aplikacji.

.. tip::

Katalog :file:`malybar` będziemy nazywać **katalogiem projektu**, natomiast katalog
:file:`pizza` – **katalogiem aplikacji**.

Zajrzyjmy do katalogu naszego projektu. W terminalu wydajemy polecenie ``tree`` lub
jeżeli go nie ma ``ls -R``.

.. figure:: img/django03.jpg

.. note::

Katlog projektu :file:`malybar` zawiera:

- bazę, czyli plik :file:`db.sqlite3`; domyślnym systemem bazodanowym jest SQLite3;
- skrypt Pythona :file:`manage.py` służy do zarządzania projektem;
- :file:`settings.py` – zawiera konfigurację projektu;
- :file:`urls.py` – to swego rodzaju menu naszego projektu, a więc lista wpisów
definiująca adresy URL dostępne w naszym projekcie;
- :file:`wsgi.py` – plik konfiguracyjny wykorzystywany przez serwery WWW.


W katalogu aplikacji :file:`pizza` znajdziemy:

- :file:`apps.py` – ustawienia aplikacji;
- :file:`admin.py` – konfigurację panelu administracyjnego;
- :file:`models.py` – plik definiujący modele danych przechowywanych w bazie;
- :file:`views.py` – plik zawierający funkcje, tzw. *widoki*, obsługujące zdefiniowane
w plikach :file:`urls.py` adresy.

Wszystkie katalogi zawierają również plik :file:`__init__.py` wskazujący, że dany
katalog jest modułem Pythona.

Po utworzeniu szkieletu aplikacji wykonujemy opisane niżej czynności.

1. Edytujemy plik ustawień projektu :file:`malybar/settings.py`, a w nim:
- rejestrujemy aplikację pizza dopisując jej konfigurację do listy INSTALLED_APPS;
przy okazji widzimy, że domyślnie na liście znajdują się już aplikacje dostarczane
przez framework;
- ustawiamy polską strefę czasową i polski język

.. code-block:: python
INSTALLED_APPS = [
'pizza.apps.PizzaConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
...
LANGUAGE_CODE = 'pl'
TIME_ZONE = 'Europe/Warsaw'
...
2. Włączamy mapowanie adresów aplikacji pizza do pliku projektu :file:`malybar/urls.py`:

.. code-block:: python
Następnie należy:
urlpatterns = [
url(r'^', include('pizza.urls', namespace='pizza')),
url(r'^pizza/', include('pizza.urls', namespace='pizza')),
url(r'^admin/', admin.site.urls),
]
- zmodyfikować plik :file:`moja_str/urls.py` – włączyć :file:`moja_apl/urls.py`
- wyjaśninie funkcji ``url()``, parametry obowiązkowe to `regex` i `view`, opcjonalne `kwargs` i `name`
- w pliku :file:`moja_str/settings.py` wybieramy bazę danych (domyślnie SQLite3), ustawiamy ``TIME_ZONE = 'Europe/Warsaw'`` oraz ``LANGUAGE_CODE = 'pl'``
wyjaśninie funkcji ``url()``, parametry obowiązkowe to `regex` i `view`, opcjonalne `kwargs` i `name`
- ponownie uruchomić serwer

Dostęp do aplikacji możesz zweryfikować wpisując adres: ``127.0.0.1:8000/moja_apl``.
Expand Down

0 comments on commit aff50cd

Please sign in to comment.