HTML

Webfejlesztés python / Django alapokon

Django - a python alapú framework, amely jelentősen megkönnyítheti az egyszeri fejlesztő életét - már ha hagyja...

Címkék

app (1) django (6) hasznos (3) komment (1) média (1) python (2) rövid (1) struktúra (1) tipp (3) új (1) Címkefelhő

Sorbarendezés és lapozás

2010.06.01. 14:01 Roodie

 Igen hasznos kis plugin-párosra bukkantam a minap. Szokványos feladattal küzdöttem, táblázat, sok adat, lapozás, sorbarendezés fejlécre kattintva... Gyanús volt, hogy biztosan lehet ezt egyszerűbben is megoldani annál, ahogy én próbáltam. 

Nos, valóban lehet. Mégpedig igen ügyesen, a view kódjának módosítása nélkül.

Az első összetevő a sokak által már bizonyára ismert django-pagination. Ez az ügyes kis template tag a beépített Paginator funkcionalitását helyezi ki egy template tagbe és egy middleware-be. Így nem kell a view-ban kézzel piszmogni vele, elég  "{% autopaginate object_list 10 %}" a templatebe a táblasorok elé valahova, és a holmi teszi a dolgát. A lapozót pedig egy {% paginate %} rakja ki, ha a beépített template nem tetszik, akkor a szokásos módon felülírható egy sajáttal.

A második összetevő a django-pagination "lelki társa" - a django-sorting. Szintén template tag és middleware páros. Használata a lapozóéhoz hasonló: a rendezni kívánt táblázat előtt bárhol beírjuka template kódjába a taget: {% autosort object_list %} . Ennyi. Ez elvégzi szépen a sorbarendezést. Persze önmagában ez nem elég, valahogyan meg is kell mondanunk neki, hogy mely oszlop alapján rendezzen. Erre is egy spéci taget kínál a plugin: a táblázat fejlécében az adott oszlop nevét cseréljük egy "{% anchor mezőneve "Oszlop megnevezése" %} tagre, és a fejlécünk máris kattintható, sőt, egy kis irányjelző nyilacskát is kapunk automatikusan.

Ami a legjobb - a két plugin gond nélkül működik együtt

Egyszerű de nagyszerű megoldás, de hát pont ezért szeretjük a Djangot ennyire! 

Szólj hozzá!

Címkék: tipp hasznos django

Átírt queryset az svn repositoryban

2008.04.29. 19:05 Roodie

A Django framework, bár még mindig csak 0.9x verziójú, igen stabil már évek óta - köszönhetően a ténynek, miszerint a kezdetektől fogva éles környezetben használják: maga az ljworld.com oldal is az SVN változaton fut.

Azonban az, hogy nem végleges verzió, itt-ott még megmutatkozik - gyakran kerülnek bele a kódba visszafelé nem kompatibilis változtatások. Ez történt hétfőn is, amikor a Django rendszer egyik alapelemének számító queryset modul kapott némi ráncfelvarrást.

Lássuk a ( szerintem ) legfontosabb módosításokat!

1. order_by() - végre megfelelő a szintaxisa, konzisztens a többi résszel. A korábbi változatokban a kapcsolt táblákra az order_by(tabla_neve.mezoneve') formaban kellett hivatkozni; az SVN verzióban ez immár order_by('kulcsmezoneve__mezoneve').

2. Modell öröklődés! Régóta várt dolog, végre megérkezett. Bővebb infó erre.

3. A queryset iterátor metódus ( __iter__() ) nem tölti be automatikusan az összes eredményt - azaz ha pörgetjük az eredményeket egy bizonyos rekordot keresve, akkor, ha a kért adat a queryset elején volt, sok memóriát spórolunk vele.

4. select_related() függvénynek meg lehet adni paraméterként a kért kapcsolatokat. Így feleslegesen nem dolgozik és foglalja a memóriát.

5. Update() metódus querysetekhez - lehetővé válik egy queryset eredményéül kapott rekordok adatait manipulálni:  News.objects.filter(pub_date__year=2007).update(headline='Tavalyi hír')

A további újításokról és változásokról itt lehet bővebben olvasni.

Szólj hozzá!

Címkék: új django

Dual session

2008.03.13. 10:48 Roodie

Tegyük fel hogy szükségünk van egy automatikus login megoldásra egy portálon. Persze mind tudjuk milyen veszélyeket rejt ez magában ( netkávézókban automatikusan belépő böngészők és társai ) ám mégis állandóan felmerülő kérés ügyfelek részéről, még az esetleges problémák ecsetelése után is...

Azonban Django esetében nem várt problémába ütközhetünk - az alap session kezelés az alkalmazásra nézve globális, a viselkedése a setup.py konfigban szabályozható, és NEM lehet megadni felhasználónként, hogy a session csak a böngésző bezárásig legyen érvényes vagy megmaradjon. Azaz egy "Emlékezz rám" funkciót az alap sesion kezeléssel nem lehet megvalósítani.

Szerencsére a Django moduláris felépítésének hála igen egyszerű a meglévő session kezelést kibővíteni. A kulcsszó a middleware. Persze mindezt nem kell nekünk magunknak megtenni, a Django CookBookban már van egy elkészített dual session middleware, amely tökéletesen működik. Ez a beépített session middleware-t váltja fel az alkalmazásban, megtartva természetesen annak minden jó tulajdonságát :-)

Szólj hozzá!

Címkék: tipp hasznos django

Modellek széttördelése

2008.02.06. 14:40 Roodie

Egy újabb hasznos tipp, ezúttal Patrick Altman blogjáról - sok száz, esetleg ezer soros models.py források felosztása több kisebb állományra.  A dolog valóban problémás tud lenni, ha a mező leírásokon és meta infókon felül több funkció is helyet kap a modellben.

A kézenfekvő megoldás - feldarabolni a modelleket és importálni a models.py elején - Django alatt nem működik alapesetben, hanem két kisebb trükköt kénytelen az egyszeri fejlesztő használni: egyrészt az adott app init.py állományában kell az importálást elvégezni majd a classokat publikussá kell tenni ( __all__ ). Ebben persze semmi váratlan dolog nincs, ez alap python módozat, sok esetben hasznos.

A másik trükk nem ennyire nyilvánvaló - az adott modell Meta részében definiálni kell a app_name és db_table változókat, hogy a Django rendszere rendesen tudja kezelni a modellt.

A részletes leírás erre található.

Szólj hozzá!

Címkék: tipp python django struktúra

Filebrowser

2008.01.22. 16:39 Roodie

Bármiféle külön magyarázat nélkül, egy igen hasznos kis alkamazás a Django amúgy is remekül használható generált admin felületét kiegészítendő - filebrowser alkalmazás. Elsősorban a képek kezelését hivatott megkönnyíteni ( ehhez némi egyszerűbb szerkesztési funkciókat is kínál ).

 



TinyMCE-vel is használható ( bár ennek integrálása a newforms alapú új adminba azért némileg macerásabb de megoldható ).

Ja, a lényeg: django-filebrowser projekt oldala

Szólj hozzá!

Címkék: média hasznos python django app

Bevezető

2008.01.22. 16:03 Roodie

Üdv mindenkinek a Django blogon. Az oldal célja mindenféle hasznos trükkökkel, példákkal szolgálni kezdő és haladó django fejlesztőknek. A blognak NEM célja bemutatni a Python programnyelvet, a Django keretrendszert, illetve az alap dokumentációban szereplő dolgokat más tálalásban elismételni.

Az alap linkek:
Python programnyelv: http://www.python.org
Django project: http://www.djangoproject.com
Django book: http://www.djangobook.com/

Szólj hozzá!

Címkék: komment rövid django

süti beállítások módosítása