October 2011
1 post
2 tags
Příběh Pěti omLuv (doma ho familierně nazýváme...
Tak dlouho se hledali, až se našli. O kom že bude řeč? O jednom príma místě,
kde se děti baví (a kde si děti, no to si poslechněte, i hrají!). A o jejich
parťákovi, kanónovi, který umí zkracovat vzdálenosti. Zkrátka, Sparkys + PPL = VL (appp).
Objednali jsme dětem hračku. V neděli, v klidu, s vizí, že do narozenin balík
bez problémů dorazí.
Chyba. Balík nedorazil a nikdy už nedorazí. Ještě že...
August 2011
1 post
4 tags
Django, testy, fixtůry a posraté rekurze
Psát testy je pruda. O to větší, když po dvouhodinové přípravě ku*va-fix tur spustíte test a výstup v konzoli je plný hlášek typu:
Exception RuntimeError: 'maximum recursion depth exceeded in *' in ignored
(za * si dosaďte cokoli vás napadne)
Kura co to je? Google neporadí (teda ne přímo), ve výstupu absolutně nedopátratelné z kama vítr vane. Tak až se vám podobná situace namane, vězte, že...
December 2010
2 posts
3 tags
Tonight we’ve released Django 1.3 beta 1, as well as Django 1.2.4...
– http://www.djangoproject.com/weblog/
10 tags
Žangovinky #32
Komentovaný překlad Django Dose Community Catchup, Episode #32.
Během prosince se na svém blogu Seek Nuance pěkně rozepsal John DeRosa. V
článku “A performance lesson on Django QuerySets” dokazuje, že
bezmyšlenkovité nasazení QuerySet funkce iterator() přináší spoustu
problémů. Menší paměťové nároky byly v jeho případě draze vykoupeny četností
dotazů na databázi (co iterace to...
November 2010
3 posts
2 tags
The first alpha preview package for Django 1.3 is now available.
Release...
5 tags
Konzultačka u RevSys
5. listopadu 2010 se na IRC otevřely virtuální dvéřka do společnosti
Revolution Systems, ve které působí i Jacob Kaplan-Moss, core vývojář
Djanga. Během dvou hodin padlo téměř čtyřicet zajímavých dotazů, a ještě
zajímavějších odpovědí.
Povinná četba!
Co jsem nasál:
MySQL je divné a zatlouká si další a další hřebíčky do rakve. Modří už stejně dávno přešli na PostgreSQL.
MediaTemplate je něco...
10 tags
Žangovinky #30
Komentovaný překlad Django Dose Community Catchup, Episode #30.
18.října měla být představena alpha 1 verze Djanga 1.3. Bohužel se ale
stále objevují drobné chyby a datum se odsouvá. Na termínu oficiálního
představení nové verze se naštěstí nic nemění, 17.ledna 2011 nás objede Ježoch
a doveze překrásný dáreček. Co bude uvnitř?
generická view převlečená do class-based kabátku
jednodušší správa...
October 2010
2 posts
8 tags
Žangovinky #29
Komentovaný překlad Django Dose Community Catchup, Episode #29.
Začněme blogy. Peter Bengtsson ve svém článku Local Django development with
Nginx radí, jak na lokální mašině nakonfigurovat Nginx a využít jej k
servírování statického obsahu (CSS, JS, obrázky). Ukazuje jednoduchý postup, kterým dosáhl zrychlení z původních 446.34 req/s na
15709.54 req/s, což se pozitivně projevilo během ladění...
4 tags
Ladění výkonu Django aplikací
V září 2010 proběhl v Portlandu DjangoCon. Seznam
probíraných témat je docela velký. Pokud to čas dovolí, pokusím se
některé zajímavé přednášky zpracovat a pak se s nimi podělit zde na blogu.
První přednáška, která mě padla do oka byla “First steps in performace tuning” od Russella Keith-Mageeho řešící výkon Django aplikací.
Nejdříve si uvědomme základní fakta:
vývoj probíhá na...
July 2010
1 post
3 tags
Přidáváme objekt alá User
Všimli jste si někdy, že přidání nového uživatele v administračním rozhraní Djanga probíhá trochu jinak, než přidání jakéhokoliv jiného objektu?
Pro připomenutí — nový uživatel se zadává prostřednictvím dvou po sobě navazujících formulářů, kdy v první fázi vyplníte pouze username a heslo, a teprve při druhém kroku je možné doplnit zbytek informací.
Potřeboval jsem vytvořit podobné...
February 2010
1 post
5 tags
Taky se vám NĚKDY odpálí signál dvakrát?
Možná se Vám už někdy stalo, že při použití signálu v Djangu se vaše obslužná funkce zavolala vícekrát. Mě se to naposledy stalo dnes.
Best practice
Na umístění kódu pro signály si dávám pozor. Dle dobrých Django mravů mám v adresáři s aplikací soubor signals.py, v něm kód obslužné funkce i její pověšení na konkrétní signál. Na konci models.py pak vkládám import signals a všechno funguje jako...
January 2010
1 post
4 tags
Nefunkční testy v Djangu
A to jste věděli, že když v adresáři s vaší aplikací chybí soubor models.py, nebudou vám pro tuto aplikaci fungovat testy?
$ ./manage.py test shared
Creating test database...
[zkrácený výpis]
F
======================================================================
FAIL: testHomepage...
October 2009
2 posts
5 tags
Administrace M2M vazeb v definovaném pořadí
Vláďa Macek poslal včera na django-cs mailing list dotaz, ve kterém se zmiňuje o potřebě spravovat M2M vazby v Django administraci, avšak s podmínkou, aby bylo možné definovat pořadí jednotlivých položek.
Podobnou věc jsem nedávno řešil taky, ale trochu jinak než naznačuje Vláďa.
Moje situace
V aktuálně realizovaném projektu mám definován model popisující fotky (Photo).
U spousty jiných...
September 2009
1 post
4 tags
Kouzla v Django administraci
Přemýšleli jste někdy nad tím, jak je v Django adminu zrealizováno přidávání nových prvků do ForeignKey a M2M políček?
Mám tím na mysli ty situace, kdy na stránce máte například <select>ítko a vedle něj zelené plus — kliknutím na plus se otevře popup okno, do kterého přidáte nový prvek a po uložení se nová hodnota jakoby zázrakem objeví v původním okně:
Jak je to možné?...
July 2009
2 posts
3 tags
Zrádné get_urls()
V připravované verzi Djanga 1.1 bude možné definovat na úrovni administrace vlastní URL adresy.
Jak? Třída ModelAdmin disponuje metodou get_urls. Jejím překrytím snadno upravíte či přidáte nová URL pravidla a obsluhy pro ně.
Pokud budete postupovat přesně podle instrukcí v dokumentaci, je docela možné, že se nic nestane. Problém totiž může být uplně jinde — v hlavní definici pravidel...
4 tags
Volné chvíle, které nás dělí do vydaní Djanga 1.1, si můžete vyplnit studiem...
– via @bganicky
June 2009
3 posts
3 tags
Vypadá to, že máme nejvyšší čas nechat vychladit šampíčka. Podle TRACu nás od...
2 tags
4 tags
"Český" kalendář v administraci
Javascriptového pomocníka pro zadávání datumů v administračních stránkách Djanga všichni dobře známe. Stručně:
pokud se na stránce vyskytne datumové políčko, vykreslí se vedle něj ikona
kliknutím na ikonku se objeví malé okno pro pohodlný výběr konkrétního dne z kalendáře
Pozornému čtenáři jistě neunikl drobný detail: dny v kalendáři začínají nedělí (ano, jde o prazvláštní zvyk našich...
May 2009
4 posts
4 tags
Bojujeme proti komentářovému SPAMU, díl druhý
Krátce po nasazení Akismetu na kontrolu komentářů (viz první díl) se projevil drobný problém v “unobtrusive comments moderation” snippetu. Konkrétně — pokud komentář obsahuje české znaky s diakritikou, dojde k chybě.
Oprava je mimořádně snadná. Na řádku 43 se komentář odesílá k posouzení:
if akismet_api.comment_check(instance.comment,
data=akismet_data,
...
4 tags
Bojujeme proti komentářovému SPAMU, díl první
Webu djangoproject.cz si všimli spammeři. Přesněji, spammeři z Ruska — chlapíci důslední a vytrvalí. Výsledkem jejich snažení je (zatím) cca 1-5 SPAM komentářů denně.
Na Django ČR je nasazena aplikace django.contrib.comments, která se sice snaží SPAMování bránit, ale zarputilosti našich východních sousedů bohužel konkurovat nemůže.
Co s tím?
Nasadit Akismet — službu společnosti...
5 tags
Nefunguje vám django.contrib.flatpage?
Prováděl jsem pár úprav na Django Česká republika, a po restartu serveru přestal web fungovat. Respektive — na jakýkoliv dotaz z prohlížeče vracel status kód 404 (neexistující stránka).
Django ČR využívá aplikaci django.contrib.flatpage. Její funkce je prostá — pokud uživatel zadá URL, pro které není v urls.py definované pravidlo, vyvolá se vyjímka Http404. Tato vyjímka je zachycena...
4 tags
Autocomplete políčko v admin rozhraní
Potřeboval jsem přidat do administračního formuláře Django aplikace políčko, které by namísto <select> seznamu (nepoužitelného, kvůli velké spoustě položek) mělo nějakou formu AJAXové našeptávače.
Náhodou jsem narazil na video, jehož autorem je Jannis Leidel. Kód pro toto řešení naleznete ve výborné aplikaci django-extensions (kterou mimochodem nasazuji do každého nového Django...