Pierwszy projekt w Django

Pierwszy projekt w Django

Django jest po prostu biblioteką Pythona. Zanim zaczniesz korzystać z jej dobrodziejstw, musisz ją zainstalować. W linii komend wpisz:

pip install django

Żeby sprawdzić czy biblioteka została zainstalowana poprawnie, spróbuj ją zaimportować z konsoli. W linii komend wpisz polecenie wywołujące interpreter:
python

A potem spróbuj zaimportować bibliotekę:
import django
django.get_version()

Jeśli zobaczysz numer wersji (np. '1.10.5'), to znaczy, że Django zostało zainstalowane poprawnie. W przeciwnym wypadku spróbuj zainstalować ponownie.

Start projektu

Wróć do linii komend. Jeśli interpreter Pythona wciąż jest uruchomiony (jeśli znak zachęty na początku aktywnej linii wygląda mniej więcej tak: ">>>"), wyjdź z niego poleceniem quit() lub skrótem CTRL+D.

Czas utworzyć pierwszy projekt!

W tym celu w linii poleceń wpisz:

django-admin startproject myfirstproject

Nazwę "myfirstproject" możesz oczywiście zastąpić inną. W bieżącym katalogu powinien się pojawić nowy katalog o nazwie "myfirstproject". Jego struktura jest bardzo prosta:
myfirstwebsite/
├── manage.py
└── myfirstwebsite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

Mamy prosty plik manage.py oraz kolejny katalog o nazwie "myfirstwebsite", czyli dokładnie takiej samej, jak nazwa Twojego projektu. To tutaj znajdują się pliki z ustawieniami i inne, odnoszące się do całego projektu.

Uruchamianie projektu

Możesz wypróbować czy Twój projekt działa, wpisując polecenie:

python manage.py runserver

W konsoli pojawia się m.in. informacja, gdzie projekt został uruchomiony. Najprawdopodobniej będzie to adres: "http://127.0.0.1:8000/". Skopiuj go. Nie wyłączając działającego projektu, otwórz przeglądarkę i wklej w pasek adresu. Twoim oczom powinien się ukazać napis:

"It worked!
Congratulations on your first Django-powered page."

Aby wyłączyć działający serwer, użyj kombinacji klawiszy CTRL + C.

Czas na dodanie pierwszej aplikacji!

Dodawanie aplikacji

Dodanie pierwszej i każdej kolejnej aplikacji wygląda podobnie. Używamy do tego polecenia:

python manage.py startapp myfirstapp

Pamiętaj, żeby wywołać to polecenie z katalogu, w którym znajduje się plik "manage.py". Tym razem w katalogu "myfirstwebsite" pojawił się dodatkowy katalog o nazwie "myfirstapp", która jest nazwą naszej pierwszej aplikacji.

Zawartość katalogu wygląda mniej więcej tak:

myfirstwebsite/
├── manage.py
├── myfirstapp
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── myfirstwebsite
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-35.pyc
│   └── settings.cpython-35.pyc
├── settings.py
├── urls.py
└── wsgi.py

Zapewne chcesz zobaczyć własną treść strony startowej, zamiast wygenerowanego tekstu. Potrzebujemy do tego edycji trzech elementów: szablonu, widoku i linkowania. Ale po kolei.

Szablon

Potrzebujemy stworzyć treść strony, którą chcemy wyświetlić. W tym celu tworzymy nowy katalog "templates" w katalogu "myfirstapp", a potem kolejny katalog "myfirstapp". W nim tworzymy nasz szablon - plik o nazwie "index.html". Struktura katalogowa po utworzeniu, wygląda mniej więcej tak:

myfirstwebsite/
├── db.sqlite3
├── manage.py
├── myfirstapp
│   ├── admin.py

│ (...)

│   └── templates
│       └── myfirstapp
│      └── index.html
└── myfirstwebsite
├── __init__.py

Po co nam takie zagnieżdżenie katalogów? Jest to konwencja nazewnicza, która pomaga potem odnaleźć właściwy szablon. Jeśli umieścilibyśmy plik "index.html" bezpośrednio w katalogu "templates", szablon nie byłby rozróżnialny od innych plików "index.html" w innych aplikacjach.

Czas na dodanie kodu do naszego szablonu. Najprostszy przykład strony w kodzie HTML:

<html>
<head>
<title>My first website!</title>
</head>
<body>
<p>Simple text</p>
</body>

Widok

Czas na edycję pliku "views.py" i utworzenie naszego pierwszego widoku. Plik został automatycznie utworzony w czasie dodawania aplikacji, a teraz możemy dopisać do niego właściwą treść. Znajdziesz go w katalogu z aplikacją, czyli "myfirstapp". Pierwsze dwie linijki są już w Twoim pliku, dopisz dwie pozostałe. Funkcja "render" z biblioteki Django przyjmuje dwa argumenty. Jeden to obiekt 'request', przekazywany do samej funkcji, a drugi to nazwa naszego szablonu. Wpisujemy tu nazwę pliku index.html, który wcześniej utworzyliśmy.

from django.shortcuts import render
# Create your views here

def index(request):
return render(request, template_name="myfirstapp/index.html")

Linkowanie

Mamy gotowy szablon i widok, który pozwoli nam wyświetlać zawartość strony. Póki co nie określiliśmy jeszcze pod jakim adresem chcielibyśmy widzieć naszą stronę. W tym celu musimy edytować plik "urls.py" w katalogu z naszymi ustawieniami projektowymi, czyli "myfirstwebsite":

myfirstwebsite/
├── db.sqlite3
├── manage.py
├── myfirstapp
└── myfirstwebsite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

Wygenerowana wersja pliku "urls.py" zawiera już podstawową ścieżkę do panelu administracyjnego. Aby dodać ścieżkę do naszego widoku dodajemy importowanie naszej funkcji "index" oraz ścieżkę pod którą chcemy wyświetlać ten widok. W tym wypadku parametr '^$' funkcji url oznacza, że chcemy wyświetlać nasz widok na głównej stronie naszej aplikacji (czyli http://127.0.0.1:8000/). W przeciwieństwie do panelu administracyjnego, który będzie dostępny na podstronie, pod adresem http://127.0.0.1:8000/admin/.

from django.conf.urls import url
from django.contrib import admin
from myfirstapp.views import index

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', view=index),
]

Uruchamianie aplikacji

Teraz już możemy uruchomić naszą aplikację i zobaczyć jej efekt w przeglądarce. Używamy ponownie komendy:

python manage.py runserver

Otwieramy przeglądarkę i wpisujemy adres "http://127.0.0.1:8000/". Na stronie powinien się pojawić napis: "Simple text". Jeśli się pojawił - gratuluję! Masz za sobą pierwszy projekt w Django.

Co dalej?

Jeśli chcesz nauczyć się więcej o Django polecam na początek większe tutoriale, które obejmują znacznie szerszą tematykę:

Tutorial Django Girls [PL]
Tutorial w oficjalnej dokumentacji Django [EN]
Mozilla Developer tutorial [EN]

PS.


To pierwszy tutorial, który napisałam. Jeśli napotkasz na jakieś problemy lub masz jakieś uwagi - podziel się ze mną. Pozwoli mi to ulepszyć ten i przyszłe tutoriale. Dzięki!

5 Komentarze

  1. WPK

    Cześć
    Trafiłem na Twojego bloga w poszukiwaniu informacji o Django i powiem szczerze ze bardzo mi sie podoba bo jest prowadzony w fajny, troszkę odmienny sposób :)
    Mam skrytą nadzieje że będziesz poruszać jak najwięcej zagadnień o Djagno :)
    Od dziś masz nowego i stałego bywalca na blogu.
    Pozdrawiam WPK !

    1. Justyna Kubisztal

      Dzięki :) Mam zamiar pisać więcej o Django, bo sama wciąż się uczę, ale jest to mega przyjemna nauka.

      1. WPK

        Czekam z niecierpliwością :)

  1. max

    szkoda że seria tutorialowa umarła :(

    1. Justyna Kubisztal

      A co dokładnie by Cię interesowało? Mam wrażenie, że tutoriali Djangowych jest już całkiem sporo. Nie chcę się powtarzać, a tutorial to sporo pracy :) Daj znać czego brakuje.