Every author of web application had to create a list of something, eg. list of recent blog posts, list of items in online shop etc. This seems to be very easy: just loop through the records and display them in ordered/undordered list or table (ol, ul, table). Unfortunately it quickly turns out to be much read more
Speeding up Django templates
In general, Django is performing well but there are some cases where things are going to be slow… This post is about optimisation of django templates. If you have to process huge amount of objects and render some templates for each of them, then You’ll quickly notice that it is slow and some profiling will read more
Groups of cache entries in memcached
Did you ever need to invalidate whole set (say group) of keys in your cache? I did, many times. This is not so hard if you have few, good known, cache keys that are considered a group. But soon it turns to be a pain to easily remove all necessary keys. Simple example: Page, that read more
Formsety w Django (case study)
Django posiada wbudowane mechanizmy do obsługi formularzy, ma też narzędzia do obsługi całych ich zestawów, czyli formset’ów. Oba mechanizmy wiele ułatwiają, z formsetami mam jednak ten problem, że prawie nigdy nie pamiętam jak się ich używało i jak je odpowiednio skonfigurować. Dotyczy to zwłaszcza ModelFormset’ów, czyli tych operujących na Modelach (danych z bazy). Jak ustawić read more
Django, polskie znaki i Postgres
Ostatnio parę ładnych godzin spędziłem debugując dziwny problem zaobserwowany w pewnej aplikacji. Otóż aplikacja ta działała bez problemu w środowisku deweloperskim, natomiast w środowisku testowym pola autocomplete (ajax) nie chciały znajdować użytkowników… Całość używała mniej więcej czegoś takiego MojModel.objects.filter(first_name__istartswith=’Jaś’) Wstępnie udało mi się stwierdzić, iż problem dotyczył tylko użytkowników z polskimi literkami w nazwiskach/imionach. Gorzej, read more
Proste testowanie formularzy w Django
Django posiada wbudowane mechanizmy umożliwiające tworzenie testów. Jednym z elementów Django’wego TestCase jest klasa Client umożliwiająca zasymulowanie przeglądarki z poziomu kodu naszego testu. Przykładowe użycie tej klasy wygląda tak: from django.test.client import Client c = Client() response = c.post(‘/login/’, {‘username’: ‘john’, ‘password’: ‘smith’}) Super… ale czy na pewno? Ostatnio natrafiłem na dość uciążliwe w testowaniu read more
Widgety z contrib.admin w naszej aplikacji
Standardowe widgety znajdujące się w django.forms.widgets często okazują się być zbyt ubogie dla naszych aplikacji. Typowym przykładem może być widget dla pola DateField, który renderuje się jak zwyczajne pole tekstowe (a gdzie jakiś kalendarzyk?). Inny przykład to widget dla FileField, który podczas edycji obiektu nie wyświetla informacji o już załadowanym pliku i w efekcie nie read more