- Co to jest web2py?
- "Instalacja".
- Panel.
- Tworzymy pierwszy model.
- Tworzymy kontroler.
- Tworzymy widok.
- Co dalej?
- Linki
1. Co to jest web2py?
Web2py to kolejny framework do tworzenia stron www, napisany w Pythonie. Kolejny, ale zupełnie różniący się od
innych. Wykorzystuje wzorzec MVC (ang. Model-View-Controller)
oraz posiada wbudowany edytor aplikacji przez przeglądarkę. Nie wymaga instalacji oraz konfiguracji - ściągamy paczkę
i odpalamy, to wszystko! Czym się różni od innych frameworków? Przede wszystkich prostotą i łatwością w nauce. Został
stworzony w celach edukacyjnych przez Massimo Di Pierro. Więcej można
przeczytać na wikipedii.
2. "Instalacja".
Aby zacząć zabawe z web2py, należy ściągnąć odpowiednią paczke na dany system. Pod windowsa mamy plik .exe, pod mac
os x mamy .app, a dodatkowo pod każdy system możemy ściągnąć kod źródłowy (aby go odpalić potrzebujemy pythona w
systemie).
Windows -
http://www.web2py.co.../web2py_win.zip
Mac OS X -
http://www.web2py.co.../web2py_osx.zip
Źródła -
http://www.web2py.co.../web2py_src.zip
3. Panel.
Po ściągnięciu należy tylko uruchomić plik web2py.exe/.app/.py. Gdy go uruchomimy, pokaże nam się krótka prezentacja
oraz panel zarządzania serwerem deweloperskim. Możemy go uruchomić oraz wyłączyć, dodatkowo pokazuje nam wykres
przedstawiający ilosc wejść.
Po odpaleniu serwera i podania hasła do panelu administracyjnego, web2py powinno uruchomić domyślną przeglądarkę pod
adresem http://127.0.0.1:8000, gdzie zobaczymy stronę powitalną. Następnie klikamy "Kliknij aby przejść do panelu
administracyjnego" i podajemy hasło. Strona główna panelu pokazuje jak listę naszych aplikacji. Domyślnie mamy 3:
admin, examples oraz welcome.
Stwórzmy teraz naszą własną aplikację wprowadzając nazwe (np. tutorial) w prawej kolumnie oraz klikając przycisk
submit. Następnie powinniśmy zostać przekierowani do widoku naszej aplikacji, gdzie mamy listę: modeli, kontrolerów,
widoków, tłumaczeń, plików statycznych oraz modułów.
Przejdzmy zatem to edycji modelu - db.py.
4. Tworzymy pierwszy model.
Domyślnie ten plik jest wypełniony definicjami ORM'a oraz importami dodatkowych usług, nam to na razie jest nie
potrzebne, więc usuńmy wszystko, z wyjątkiem 1 lini, w której definiujemy kodowanie (# coding: utf8). Zdefiniujmy
obiekt bazy danych:
db = DAL('sqlite://storage.sqlite')
# jako 1 argument podajemy tzw. URI danego silnika bazy danych, więcej przykładów:
http://web2py.com/examples/default/dalORM web2py jest bardzo prosty i czytelny, napiszmy więc prosty model,
powiedzmy aktualności:
db.define_table('aktualnosci',
db.Field('tytul', 'string', length=125),
db.Field('data', 'datetime', default=request.now),
db.Field('tresc', 'text'),
)Tym oto sposobem zdefinowaliśmy tabele w bazie, która ma pola: tytul (o maks. długości 125 znaków),
data (która jest polem datetime i domyślnie przyjmuje aktualną date i czas) oraz tresc. Zdefiniujmy
teraz walidatory, czyli co może, musi albo nie może być w w/w polach.
db.aktualnosci.tytul.requires = [ IS_NOT_IN_DB(db, 'aktualnosci.tytul'), IS_NOT_EMPTY() ] db.aktualnosci.data.requires = IS_NOT_EMPTY() db.aktualnosci.tresc.requires = IS_NOT_EMPTY()
Jak łatwo się domyślić wszystkie nasze pola są obowiązkowe (walidator IS_NOT_EMPTY()), a pole tytul ma
być unikalne. Dodajmy teraz jakiś przykładowy news, w tym celu musimy zapisać zmiany (przycik save, u góry po lewej
stronie edytora), następnie "edytuj" u góry w menu i "administracja bazy danych", pod "Modele". Weszliśmy do
zarządzania bazą danych, jeśli wszystko zrobiliśmy dobrze, pojawiła nam się nasza tabelka - db.aktualnosci.
Wejdźmy więc w nią i wstamy nowy rekord ("wstaw nowy rekord do tabeli aktualnosci").
Tutaj można się pobawić, czy walidatory działają poprawnie (np. zostawić pole tytul puste, dodać raz news o tytule
"foo" i spróbować dodać taki sam drugi raz etc.).
Następnym krokiem będzie napisanie odpowiedniego kontrolera, który pokaże nam listę newsów.
5. Tworzymy kontroler.
Udajmy się teraz do strony zarządzania aplikacją i edytujmy kontroler default.py. Usuńmy wszystko z wyjątkiem
nagłówka, który odpowiada za kodowanie. Przykładowy kontroler, który wyświetla listę newsów z bazy:
def index():
news = db().select(db.aktualnosci.ALL)
return dict(news=news) Zapiszmy i wejdźmy w index, który znajduje się nad edytorem po lewej stronie. Powinna pojawić się tabelka z rekordami
z bazy danych, ale taka trochę... brzydka?
Napiszmy więc widok który pokaże te rekordy tak jak my chcemy!
6. Tworzymy widok.
Znów musimy przejść do głównego ekranu aplikacji i edytować widok default\index.html (domyślnie będzie ładowany przy
funkcji index z kontrolera default.py, analogicznie jeśli mamy kontroler foo.py i w nim funckje bar, to adres widoku
- foo/bar.html). Usuńmy z niego wszystko oprócz 1 linijki ({{extend 'layout.html'}}). Nasz widok może wyglądać np
tak:
{{extend 'layout.html'}}
<h1>Newsy</h1>
<br/>
{{ for new in news: }}
<div>
<h2>{{= new.tytul }} <small>({{= new.data }})</small></h2>
<p>{{= new.tresc }}</p>
</div>
<br/>
{{ pass }}Wew. {{ }} można używać pythona, natomiast {{= cos }} wyświetla "cos". Ja użyłem prostej pętli for do wyświetlenia
wszystkich pobranych i przekazanych przez kontroler newsów, które znajdują się w news.
7. Co dalej?
W następnym tutorialu pokażę jak napisać prosty system użytkowników, dopisać komentarze do naszych aktualnosci, oraz
jak zbudować prosty Panel Administracyjny. Na dziś to by był koniec, mam nadzieję, że komuś się przyda i skorzysta z
tego artykułu.
Pozdrawiam - pagenoare.
8. Linki.
http://web2py.com
http://groups.google.com/group/web2py
#web2py @ FreeNode
Załączone pliki
-
web2py.app.tutorial.gz (61,26 KB)
Ilość pobrań: 5

Logowanie
Rejestracja
Pomoc


Do góry
Cytuj