Model i interfejs użytkownika

2007-05-20 13:53 | 0 Comments | django python

Często w swojej pracy używam formularzy. Kto ich nie używa? Tworząc kolejny moduł, zabieram się wpierw za stworzenie źródła danych (na ogół jest to baza danych) stworzenie odpowiednich tabel, klas dających dostęp do tych danych, oraz Interfejs służący do wprowadzania danych.

Jedną z zalet django jest właśnie ORM. Bardzo prosty, lecz w pełni funkcjonalny moduł dający dostęp do danych.

Model obsługi linków na blogu. Poniższy kod automatycznie dodaje CRUD'a do panelu administratora. Prawda, że piękne?

class Links(models.Model):
    title = models.CharField(maxlength=50)
    url = models.CharField(maxlength=50)
    def __str__(self):
        return self.title
    class Meta:
        ordering = ['title']
        verbose_name = 'Link'
        verbose_name_plural = 'Linki'
    class Admin:
        list_display = ['__str__','url']

A gdybym chciał stworzyć np: Moduł kontaktowy? Od strony osoby odwiedzającej stronę byłby to po prostu formularz w dziale kontakt z polami: tytuł, treść, imię i nazwisko, e-mail kontaktowy. Po wysłaniu takiego formularza obiekt zapisywałby się do bazy danych po czym ja dostawałbym na maila informację o tym, że ktoś chce się ze mną skontaktować.

Kolejną ciekawą rzeczą jaką odkryłem jest generator formularza na podstawie modelu (Jak zaczynałem przygodę z django, trzeba było ręcznie tworzyć klasę formularza). Generating Forms for model. Duże ułatwienie.

django.newforms.form_for_model()

Formularz prócz normalnego zachowania klasy Forms, otrzymuje metodę save. Jak łatwo się domyślić zapisuje obiekt do bazy danych (Używając odpowiedniego modelu). Chcąc dać gościom na stronie możliwość dodawania Wiadomości która, trafiałaby do modułu kontakty w Panelu Admina, wystarczyłoby wykorzystać stworzenie formularza na podstawie modelu. Problem znika. Coś podobnego można wykorzystać przy formularzu do Komentowania.

Im dłużej przyglądam się django, tym większy potencjał widzę. Miesiąc temu zastanawiałem się jak generować formularze dla modeli. Teraz, deweloperzy dodali tą funkcjonalność. W repozytorium siedzą jeszcze takie projekty jak:

  • per-object-permissions - dostęp ustalany na poziomie rekordu
  • multiple-db-support - wsparcie obsługi wielu baz danych
  • i18n - lepsza obsługa
  • newforms-admin - przepisanie panelu admina na korzystanie z nowej klasy formularzy + dodatkowa funkcjonalność.
  • search-api - mechanizm indeksowania i wyszukiwania

i wiele więcej... Szczegóły są dostepne pod http://code.djangoproject.com/

W chwili szukam rozwiązania z panelu administratora. Chodzi mi o użycie "komponentu" do wyświetlania listy, ze stronicowaniem/filtrowaniem/wyszukiwaniem. Ciekawi mnie to, czy deweloperzy django chcą wyodrębnić ten mechanizm. Może już jest wyodrębniony - chodź wątpię. W adminie jest stworzony po prostu view. Można by przerobić ten view, zmienić go na generic view, podając tylko QuerySet jako parametr + Klasa konfiguracyjna (Jakie pola mają się pokazywać w liście, po czym można filtrować, ile elementów na stronie + wiele wiele więcej)

Kolejny temat to postawienie django pod fastcgi pod apache, bądź lighttpd. Chce przeprowadzić prosty test. Postawie bloga który właśnie Czytasz na 2 serwerach, jako fastcgi. Interesuje mnie liczba requestów jaką jest w stanie przetworzyć serwer. (Mam problemy w uruchomieniu fastcgi)


Cytat

Twoje życie ma kolor Twojej wyobraźni.

Ostatnie komentarze

  • pomostZprzyszlosci - Pamiętaj o tym żeby w planach uwzględnić śpiewanie na mnie - jestem po...