Open Source

Społeczność

Ta strona, odświeżana co godzinę, zbiera wpisy z blogów na tematy związane z Django

Django class based views, modele i formularze

Posted on Wrzesień 7, 2012 at 8:15 po południu by Biblioteka Pythona | Django RSS

Django class based views oferują szeroki wachlarz możliwości i mogą znacząco skrócić, uprościć kod widoków. Trzeba je tylko dobrze poznać. W tym artykule przedstawię widoki powiązane z formularzami.

Przeczytaj cały wpis »

Wspomaganie testów za pomocą ludibrio

Posted on Wrzesień 2, 2012 at 1:15 rano by Biblioteka Pythona | Django RSS

W testach zakładamy jakieś testowe dane wejściowe dla których określamy oczekiwane poprawne dane wyjściowe. Problem pojawia się gdy nie możemy ustawić wszystkich danych wejściowych - np. gdy kod pobiera dane z zewnętrznego API, albo generuje losowe dane i je dalej przetwarza, formatuje. Pomocna do testowania takich "trudnych" przypadków może być biblioteka ludibrio.

Przeczytaj cały wpis »

Testowanie aplikacji Django z Selenium

Posted on Sierpień 6, 2012 at 1:15 rano by Biblioteka Pythona | Django RSS

Selenium to popularne narzędzie do automatyzowania operacji wykonywanych przez przeglądarkę. Głównym zastosowaniem Selenium są testy aplikacji webowych, w szczególności ich frontentu. Za pomocą tego narzędzia możemy pokryć testami bardziej frontendową część aplikacji, np. kod JavaScript - coś czego zwykłe testy nie są w stanie obsłużyć. Django 1.4 wprowadziło LiveServerTestCase - TestCase, który odpala własny serwer "deweloperski". To w efekcie umożliwiło łatwą integrację Selenium w testach Django. Selenium z Django 1.4 zaprezentowano m.in w prezentacji na benlopatin.com. W sieci jest wiele rozwiązań dotyczących starszych wersji Django, gdzie wykorzystanie Selenium wyglądało zupełnie inaczej. W tym artykule przedstawię wykorzystanie Selenium w testach Django.

Przeczytaj cały wpis »

Sklepy najbliżej ciebie - geografia z GeoDjango

Posted on Sierpień 2, 2012 at 11:15 po południu by Biblioteka Pythona | Django RSS

Boom na urządzenia mobilne jak i powszechny dostęp do internetu wywołał spore zapotrzebowanie na usługi związane z nawigacją, geolokalizacją i wyszukiwaniem spersonalizowanym pod kątem obecnego położenia geograficznego. Obecnie da się już dość "łatwo" tworzyć aplikacje oferujące takie funkcjonalności. Django oferuje cały ogromny wewnętrzny framework - geodjango. W tym artykule zaprezentuję aplikację Django wykorzystującą kilka elementów geodjango do wyszukiwania najbliższych sklepów - na mapie i po odległości od podanego adresu. Aplikacja ta zaprezentuje podstawowe elementy GeoDjango (i całkiem ciekawe zastosowanie).

Przeczytaj cały wpis »

Ciągła integracja projektów Django za pomocą Jenkinsa

Posted on Lipiec 22, 2012 at 11:15 po południu by Biblioteka Pythona | Django RSS

Jenkins to narzędzie do śledzenia wykonywanych zadań, do "ciągłej integracji" projektów. Aplikacja ta może śledzić wykonywanie zadań z crona, czy też sama wykonywać zadania jak np. testowanie i budowanie aplikacji gdy pojawi się nowa zmiana w repozytorium. Django może skorzystać z django-jenkins by zapewnić efektywną obsługę projektów Django w Jenkinsie. Django-Jenkins zapewnia informacje o pokryciu kodu testami, czy naruszenia pep8, pylint, pyflakes itd. W tym artykule zaprezentuję jak zacząć z Jenkinsem odpalając go lokalnie dla lokalnego kodu. W wersjach "produkcyjnych" Jenkins obserwowałby jakieś repozytorium, czy współpracował z jakimś systemem do recenzowania kodu (np. Gerritem).

Przeczytaj cały wpis »

Tymczasowe pliki w Django do testów i operacji na plikach w locie

Posted on Lipiec 17, 2012 at 1:15 rano by Biblioteka Pythona | Django RSS

Czasami w Django zachodzi potrzeba operacji na plikach w locie, np. przechwycenie wysłanego pliku z formularza, zmodyfikowanie go i podstawienie do modelu do zapisu. W testach formularzy też przyda nam się obiekt pliku, który pozwoli zwalidować formularz. ContentFile jest rozwiązaniem połowicznym - możemy np. ustawić ten obiekt jako wartość pola w modelu, ale już do formularza oczekującego na plik graficzny się nie nada. W sieci znajdziemy przykłady ze StringIO - ten obiekt sam też nie da rady bo brakuje mu metod jakie Django chce wywoływać. Jest na szczęście w Django InMemoryUploadedFile, które może przydać się do różnych operacji na plikach.

Przeczytaj cały wpis »

Owocna współpraca Django z JavaScriptem

Posted on Lipiec 8, 2012 at 11:15 po południu by Biblioteka Pythona | Django RSS

Współpraca backendu z frontendem, czy backendu z kodem JavaScript frontendu nie jest sprawą oczywistą. Jeżeli nie chcemy "hardkodować" linków i danych w plikach js to musimy je w zwinny sposób przekazać z backendu do JavaScriptu. Pobierając dane poprzez żądania AJAX zazwyczaj będziemy chcieli mieć dane w formacie JSON. W tym artykule przedstawię kilka rozwiązań i dodatków do Django ułatwiających współpracę backedu Django z JavaScriptem.

Przeczytaj cały wpis »

memSQL i MariaDB w Django

Posted on Czerwiec 30, 2012 at 8:15 po południu by Biblioteka Pythona | Django RSS

memSQL to nowa baza danych oferująca wysoką wydajność dzięki wykorzystaniu pamięci RAM jako głównego składowiska danych jak i kompilacji zapytań (FAQ). Nie jest powiązana z MySQL, ale oferuje interfejs zgody z tą bazą danych co ułatwia jej wykorzystanie, czy szybkie przetestowanie. MariaDB to fork MySQL, binarnie zgodny z tą bazą danych. W odróżnieniu od "rodzica" MariaDB zawiera dodatkowe silniki do przechowywania danych i liczne dodatki - opisane w dokumentacji.

Przeczytaj cały wpis »

Migracje w Django za pomocą South

Posted on Czerwiec 17, 2012 at 11:15 po południu by Biblioteka Pythona | Django RSS

South to narzędzie do migracji struktury i danych zawartych w bazie danych dla aplikacji Django. South w praktycznie całkowicie zautomatyzowany sposób potrafi śledzić zmiany w modelach i tworzyć nowe migracje aktualizujące strukturę tabel w bazie danych. Ułatwia to rozwój aplikacji (nie trzeba tworzyć migracji ręcznie), jak i jej utrzymanie, zarządzanie (można cofnąć się do wybranej starszej migracji reprezentującej np. starszą wersję aplikacji).

Przeczytaj cały wpis »

Fabryki Factory Boy w testach Django

Posted on Czerwiec 10, 2012 at 10:16 po południu by Biblioteka Pythona | Django RSS

Factory Boy to narzędzie zastępującego Django fixtures, czy ręczne tworzenie danych w testach. Ułatwia tworzenie danych potrzebnych do testów, jak i łatwe utrzymanie ich wraz z rozwojem projektu i struktury modeli. Factory Boya znajdziemy na githubie. Dostępna jest też dokumentacja, czy prezentacja na PyWaw.

Przeczytaj cały wpis »

Django class based views, modele i formularze

Posted on Maj 28, 2012 at 12:15 rano by Biblioteka Pythona | Django RSS

Django class based views oferują szeroki wachlarz możliwości i mogą znacząco skrócić, uprościć kod widoków. Trzeba je tylko dobrze poznać. W tym artykule przedstawię widoki powiązane z formularzami.

Przeczytaj cały wpis »

Integracja logowania/rejestracji z Facebookiem poprzez OAUTH

Posted on Maj 6, 2012 at 10:15 po południu by Biblioteka Pythona | Django RSS

Integracja rejestracji/logowania z Facebookiem na wielu serwisach jest bardzo przydatna. W Django jest na to kilka sposobów. Podstawowy element to autoryzacja poprzez OAUTH, a dodatkowy to wykorzystanie Facebookowego Graph API do pobierania/tworzenia danych (np. pobieranie informacji o użytkowniku, tworzeniu postów na jego tablicy itp.) Obsługę autoryzacji zapewni django_facebook_oauth (dostępnych jest kilka forków). Do Graph API można wykorzystać Facepy - token z oauth zapisywany jest w bazie przez django_facebook_oauth.

Przeczytaj cały wpis »

Aplikacje facebookowe z fandjango i facepy

Posted on Maj 5, 2012 at 1:15 rano by Biblioteka Pythona | Django RSS

Pomysłów na Django + Facebook jest wiele. Pośród nich mamy facepy (dokumentacja) do obsługi Graph API i fandjango (dokumentacja) do tworzenia aplikacji facebookowych wykorzystujące facepy oraz oferujące mechanizm autoryzacji użytkowników w aplikacji. W tym artykule zaprezentuję te dwie biblioteki (na przykładzie aplikacji wykorzystującej fandjango).

Przeczytaj cały wpis »

Przegląd nowych "Generic Views" Django opartych o klasy

Posted on Kwiecień 2, 2012 at 7:58 rano by Biblioteka Pythona | Django RSS

W Django dostępne były "generyczne" widoki upraszczające tworzenie widoków o często powtarzającej się funkcjonalności. W Django 1.3 wprowadzono zupełnie nowy typ ogólnych, "generycznych" widoków opartych o klasy. Stary system oparty o funkcje został oznaczony jako przestarzały (czyli zostanie usunięty w przyszłych wydaniach frameworka). Opis jak i referencje nowych widoków znajdziemy w dokumentacji. Poniżej przedstawię je na kilku przykładach.

Przeczytaj cały wpis »

Django 1.4 - lista nowości i zmian w nowej wersji frameworka

Posted on Marzec 25, 2012 at 9:49 rano by Biblioteka Pythona | Django RSS

23 marca wydana została nowa wersja frameworka Django oznaczona numerem 1.4. Można pobrać ją ze strony projektu. Największą zmianą w tej wersji jest dodanie obsługi stref czasowych. Jeżeli włączymy obsługę stref czasowych Django będzie zapisywać obiekty daty/czasu dla czasu UTC. Przy wyświetlaniu obiekty te uwzględnią strefę czasową użytkownika. Zostało już dokładnie opisane w dokumentacji. Oprócz tego w Django 1.4 znajdziemy: Usprawnienia w ORMie, w tym obsługę SELECT FOR UPDATE, czy możliwość wydajniejszego dodawania dużych grup rekordów. Dodano także QuerySet.prefetch_related do "grupowego" ładowania powiązanych rekordów (tam gdzie select_related() nie zadziała). Zwiększenie bezpieczeństwa - dodanie lepszego haszowania haseł (np. za pomocą bcrypt, czy PBKDF2), nowe narzędzia do podpisywania danych, usprawnienia CSRF i proste zabezpieczenia przez clickjackingiem. Zmieniono także startowy szkielet projektu jak i manage.py tak było tam mniej "magii". Dodano obsługę testów działających w przeglądarce (np. Selenium) Pełna lista zmian w release notes. Django 1.4 nie obsługuje już Pythona 2.4. Obecnie Django działa pod wersjami 2.5, 2.6 i 2.7. Niebawem znane mają być plany stopniowej migracji z Pythona 2 na Pythona 3 (choć obsługa Pythona 2 na pewno za szybko nie zniknie). Z wstecznie niezgodnych zmian wymienić można wymaganą wartość dla SECRET_KEY (Django 1.4 rzuci tylko ostrzeżeniem DeprecationWarning, ale Django 1.5 już ...

Przeczytaj cały wpis »