Programiści/webdeveloperzy zwykle mają tendencję do pisania wszystkiego samemu. W Django jest to zachowanie błędne, gdyż większość aplikacji potrzebnych na stronie została już dawno napisana i opublikowana jako reusable-apps.

Takie aplikacje można w sposób bezbolesny połączyć w spójny i działający system. Poniżej przedstawiam kilka aplikacji, bez których ciężko się obejść:

django-registration

kod do pobrania tutaj

Aplikacja napisana przez Jamesa Benetta (co samo w sobie jest gwarancją jej jakości), pozwala na rejestrację użytkowników na stronie, z aktywacją poprzez e-mail.

django-contact-form

kod do pobrania tutaj

Kolejna aplikacja Benetta, pozwala na umieszczenie formularza kontaktowego na stronie, który przy zapisie wysyła odpowiedni e-mail na podany adres

django-profiles

kod do pobrania tutaj

I znowu aplikacja Benetta, pozwala na tworzenie/edycję profili użytkownika, wystarczy utworzyć model profilu, podpiąć go w odpowiednich miejscach i gotowe.

django-tagging

kod do pobrania tutaj

Aplikacja pozwalająca dodać tagi do dowolnego modelu, dostarcza specjalny typ pola w modelu TagField, oraz helpery pozwalające bezproblemowo zarządzać, wyszukiwać oraz tworzyć chmury tagów.

Haystack

kod do pobrania: tutaj

Aplikacja pozwala bezproblemowo zaimplementować na stronie któryś z “poważnych” silników wyszukiwania (Sorl, Whoosh, Xapian), dostarcza wszystkie niezbędne helpery, również template-tagi do np. podświetlania wyszukiwanych słów.

django-markitup

kod do pobrania: tutaj

Jeżeli uważasz, że dawanie użytkownikowi do ręki narzędzia, które pozwala mu samodzielnie edytować HTML na stronie, to prośba o długi i bolesny support, ta aplikacja jest dla ciebie.

Pozwala bezboleśnie używać w adminie języków znaczników zamiast HTML-a (markdown, textile, wiki-markup).

Dostarcza specjalne pole do modelów MarkupField, które przechowuje dwie wersje tekstu – w języku znaczników (do edycji), oraz w HTML-u (do wyrenderowania na stronie).

Aplikacja dostarcza też świetny edytor napisany w jQuery – markitUp, który stanowi dla użytkownika GUI do edycji tekstów, łącznie z podglądem na biężąco za pomocą Ajax-u.

South

kod do pobrania: tutaj

Kombajn pozwalający na bezproblemową migrację danych przy zmianach modeli, niezastąpiony w rozwijających się aplikacjach.

sorl-thumbnail

kod do pobrania: tutaj

Wprawdzie python dostarcza cudowne narzędzie do wszechstronnej obróbki plików graficznych – PIL, ale używanie go wprost w aplikacji django wiąże się z pewnymi problemami. Trzeba napisać widoki, thumbnail tagi, odpowiednio to wszystko połączyć itd.

Sorl-thumbnail pozwala uniknąć zbędnego zamieszania, gdyż robi to wszystko za nas – dostarcza specjalne pola do modeli pozwalające określić parametry miniaturki, listę miniaturek jakie ma zrobić itd. W przypadku zewnętrznych zdjęć dostarcza template-tagi do zeskalowania ich i konwersji, sam zarządza kasowaniem plików gdy nie są potrzebne itd.

typogrify

kod do pobrania: tutaj

Zestaw kilku(nastu) filtów typograficznych, pozwala bezboleśnie pozbyć się wszystkich wkurzających błędów typograficznych – wdów, bękartów itd.

django-compressor

kod do pobrania: tutaj

Narzędzie pozwala na łączenie ze sobą i kompresję plików css/js, ładowanych na stronie w jeden plik, za pomocą przydatnych templatetagów, co pozwala:

  • ustawić cache przeglądarki na typ js/css na najbliższą wieczność – dana nazwa pliku się nie powtórzy jak nie będzie zmiany zawartości, co oznacza że przy DRUGIM wejściu na tą samą stronę ładowany jest tylko sam html: na mojej stronie jest to różnica miedzy 300kB a 3kB
  • ograniczyć ilość requestów (1 plik css, zamiast zwykłych 5 = 4 requesty zysku), co oczywiście przyspiesza wczytywanie strony
  • przestać edukować użytkowników i klientów czemu muszą nacisnąć ctrl+f5 żeby zobaczyć zmiany na stronie (przy zmienionym css, po prostu jest generowany nowy plik z inną nazwą, żadnych problemów z cache’m przeglądarki w tym wypadku)
  • przestać się przejmować samodzielną kompresją plików js/css, po prostu podpinamy właściwe narzędzie (np. CSSTidy) pod tą aplikację. Dla developementu mamy czytelny kod – na stronie skompresowany i nie musimy nic robić.