Python, Django
Stiahnite si na začiatok virtuálny stroj tu.
Úvod do jazyka pyhton Všetko podstatné sa dá pozrieť v dokumentácii avšak syntax v pythone je robená čím jednoduchšie a teda nebudeme musieť písať mnoho riadkov kódu aby sa nám podarilo vytvoriť funkčnú aplikáciu. Konkrétne prvky, ktoré použijeme budú vysvetlené vrámci príkladu. Oficiálna dokumentácia k jazyku Python vo verzii 3.4 tu.
Virtualenv
Virtualenv je nástroj na tvorbu izolovaných Python prostredí. Je to vhodné, dokonca aj potrebné ak používame rôzne verzie Pythonu alebo niektorých z balíčkov. Napríklad ak máme dve aplikácie, z ktorých prvá používa Python 2.7 a druhá Python 3.5, tak použijeme tieto prostredia, v ktorých bude iná verzia jazyka Python.
Ak používame python vo verzii menšej ako je 3.3, tak potrebujeme nástroj pip, pomocou ktorého si doinštalujeme tento balíček.
sudo apt-get install python-pip
A potom môžeme nainštalovať balíček virtualenv.
sudo pip install virtualenv
V našom prípade je už priamo k dispozícii nástroj pyvenv, ktorý použijeme. (Aj keď sú s ním malé problémy.)
pyvenv-3.4 --without-pip djenv
Takto nám vznikne adresár djenv, v ktorom budeme ďalej pracovať. Musíme sa však prepnúť do tohto prostredia.
source djenv/bin/activate
A na opustenie tohto prostredia použijeme príkaz:
deactivate
V nami vytvorenom prostredí bude chýbať násroj pip a teda si ho doň dodáme. V aktivovanom prostredí zadáme:
curl https://bootstrap.pypa.io/get-pip.py | python
Potom prostredie deaktivujeme a znova aktivujeme. Teraz sme už pripravený na inštaláciu ďalších balíčkov.
Začíname s Djangom
Django je open source webový aplikačný framework napísaný v Pythone. Je "voľne" založený na modely model-view-controller. Pôvodne bol navrhnutý na správu niekoľkých spravodajských stránok z dielne The World Company.
Oficiálna dokumentácia k frameworku Django 1.8 tu.
Inštalácia Django frameworku:
pip3 install django
Teraz sme už pripravený a môžeme vytvoriť prvý Django projekt. Nazveme ho firstsite. Na jeho vytvorenie použijeme príkaz:
django-admin startproject firstsite
Takto vznikne adresár s názvom firstsite, ktorý bude obsahovať súbory pre základné nastavenia nášho projektu.
firstsite/ manage.py firstsite/ __init__.py settings.py urls.py wsgi.py
Teraz máme náš prvý projekt predpripravený a po úprave nastavení v súbore settings.py a zmigrovaní základných modelov do databázy, môžeme otestovať, či náš projekt funguje správne.
python manage.py migrate
python manage.py runserver
Prvá aplikácia Nástenka
V projekte si vytvoríme prvú aplikáciu s názvom nastenka.
python manage.py startapp nastenka
Čo takú Nástenku môže tvoriť? Sú to statusy a ich komentáre. Preto si tieto dve entity zadefinujeme ako naše modely v adresáry nastenka/models.py.
from django.db import models class Status(models.Model): status_text = models.CharField(max_length=150) status_like = models.BooleanField(default=False) def __str__(self): return self.status_text class Koment(models.Model): status = models.ForeignKey(Status) koment_text = models.CharField(max_length=50) def __str__(self): return self.koment_text
Ďalej si zmigrujeme tieto modely do databázy.
python manage.py makemigrations nastenka
python manage.py sqlmigrate nastenka 0001
python manage.py migrate
A modely sú nasvete spolu s tabuľkami v databáze.
Admin page
Vytvoríme si admin užívateľa, cez ktorého sa prihlásime do administratývneho rozhrania. Toto rozhranie zjednodušuje a urýchluje vytvorenie niektorých funkcionalít.
python manage.py createsuperuser
Do súboru nastenka/admin.py pridáme zopár riadkov, ktorými povieme tomuto rozhraniu, aby bral do úvahy aj naše modely.
from django.contrib import admin from .models import Status, Koment # Register your models here. class KomentInline(admin.StackedInline): model = Koment extra = 3 class StatusAdmin(admin.ModelAdmin): fields = ['status_text','status_like'] inlines = [KomentInline] admin.site.register(Status, StatusAdmin)
Views, urls, templates
Teraz vytvoríme konkrétne sránky, ktoré sa budú zobrazovať. Najprv si v adresári nastenka vytvoríme súbor urls.py.
Pôvodný súbor s url adresami upravíme tak, že doň pridáme náveznosť na tento nový súbor.
url(r'^nastenka/', include('nastenka.urls')),
Nový súbor s url adresami vyplíme týmto kódom:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$',views.index, name='index'), url(r'^(?P[0-9]+)/$', views.detail, name='detail'), url(r'^addstatus/$', views.add_status, name='add_status'), ]
Teraz môžeme vytvoriť view, teda náhľad stránky. Každá zobrazená aj "nezobrazená" stránka má svoj view, ktorý hovorí, čo obsahuje a vykonáva. Často sú spojené spolu s templateom, ktorý uľahčuje vytváranie formy týchto stránok.
from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect from .models import Status from django.core.urlresolvers import reverse # Create your views here. def index(request): status_list = Status.objects.all() context = {'status_list': status_list} return render(request, 'index.html', context) def detail(request, status_id): status = get_object_or_404(Status, pk=status_id) context = {'status':status} return render(request, 'detail.html', context) def add_status(request): try: text = request.POST['status'] except (KeyError): return render(request, 'index.html', {'message': "Nedobry status",}) else: status = Status(status_text=text) status.save() return HttpResponseRedirect(reverse('index'))
Keďže používame v kóde 2 templatey, musíme si ich vytvoriť. Najprv si však vytvoríme adresár do ktorého ich dáme. Nazveme ho templates a umiestnime do adresára s aplikáciou. Prvý bude index.html a druhý detail.html. Teraz už máme základ našej aplikácie v Djangu hotový a nastal čas na úlohy.
Úlohy: Úloha1: Pridajte úplne novú aplikáciu do projektu a tá nech vypíše "Hello World!". (Použite HttpResponse a dajde si pozor na názvy adries, ak ich pomenujete rovnako, je potrebné použiť pri deklarácii parameter namespace a pri každom volaní url adresy použiť túto hodnotu ako predponu s dvojbodkou) Úloha2: Pridajte formulár, ktorý bude pridávať komentáre k statusom. (Postupujte podobne ako pri pridávaní statusov) Úloha3: Pridajte tlačidlo like/unlike a tiež obslužné views. (Je vhodné použiť 2 view metódy)
Ak bude čas tak ešte niečo málo o static files.