Początki w Django

Tak gdzieś wczoraj postanowiłem, że napiszę aplikację pod Django. Mam kilka gotowych klas pod mechanikę postaci w RPG w Pythonie, z tym że one do tej pory mi służyły offline. Doinstalowałem PyDev do Eclipse (którego też niedawno zacząłem używać na poważnie) i stworzyłem projekt. Trochę się namęczyłem, żeby skonfigurować EGita, kapryśny był jak cholera.

Potem nadszedł czas, żeby coś konkretnego stworzyć i... poczytać tutoriale. No bo na tym etapie domyślnie potworzone pliki nic mi nie mówiły, więc należało się podszkolić. Na początku odpala się polecenie django-admin startproject nazwa_projektu. To generuje cztery pliki: __init__.py, manage.py, settings.py, urls.py. Pokrótce podstawą tego systemu jest plik manage.py, ma zaledwie 11 linijek, odwołuje się do modułów Django i obrabia polecenia jakie mu przekażemy (zdaje się, że działa identycznie jak django-admin). Plik settings.py jak sama nazwa mówi przetrzymuje nasze ustawienia. Natomiast w urls.py wpisuje się jak Django ma interpretować wywołane urle, mają one postać par wyrażenie regularne-widok. Jeśli adres pasuje to Django wywołuje przypisany mu widok. Proste.

Potem kolejnym etapem jest stworzenie aplikacji w projekcie (choć w sumie można się bez tego obyć) poleceniem django-admin startapp nazwa_appa. To nam tworzy nowy katalog, a w nim models.py, tests.py i views.py. Pierwszy to Djangowe wydanie ORM, robi na mnie raczej średnie wrażenie. Hibernate korzysta JavaBeansów, które są jakby częścią języka Java, a modele w Django to ich własny wynalazek i już widzę, że będą spore problemy, żeby to pogodzić z moimi starymi klasami. No, ale działają całkiem elegancko, gdy już stworzymy klasę modelu możemy ją stworzyć jak każdą inną klasę, przypisywać wartości, wywoływać metody, a jak skończymy wywołać metodę save() i tyle. Nasz obiekt grzecznie wskoczy do bazy. Ten tests.py jak się każdy domyśla to moduł do testów. Nie wypowiadam się, jeszcze nie użyłem. No, a plik views.py zawiera widoki o których wcześniej wspomniałem. Ogólnie widoki to funkcje, które zwracają widok typu HttpRequest. Można go skonstruować na kilka sposobów, najwygodniejsza to użycie szablonów. To po prostu zewnętrzne pliki, które zawierają kod HTML przeplatany z Djangowym językiem skryptowym (coś jak JSP albo PHP po sporej kastracji, Django jednak zmusza do używania klas Pythona).

Podsumowując Django sprawia całkiem dobre wrażenie, na razie jestem na etapie wdrażania się i tworzenia popierdółek w stylu rejestracja użytkownika. Możecie śledzić wyniki na GitHubie.