ugrás a tartalomhoz

Miért pont Django?

Török Gábor · 2010. Dec. 2. (Cs), 10.23

Horák György egy djangos prezentációt állít össze első sorban kezdő fejlesztőknek. Megkeresett azzal, hogy fussam azt át, és az észrevételeimet küldjem meg neki. Az e-mail megkeresésre poszttal válaszolok annak reményében, hogy értékes meglátásaitokkal ti is segítitek az anyag kidolgozását.

György – interpretációmban – azokat a webfejlesztőket kívánja megszólítani, akik főleg PHP-vel dolgoznak, kipróbáltak és talán használtak is már PHP keretrendszert, de módszeresen nem használnak egyet sem. De vajon miért nem? Nem kell, hogy tárgya legyen egy Djangot bemutató előadásnak, hogy meggyőzze a hallgatóságot, hogy érdemes keretrendszert használnia, viszont definició szerint annak igen, hogy a Djangot használja. Bizalmat kell kialakítani, az esetleges félelmeket és tévhiteket meg kell cáfolni. Tisztázzuk, mit ad egy keretrendszer. Pontosítok: mit nyújt a Django? És ha már egyáltalán (olcsón poén): miért pont Django? (A témában érdeklődőknek javaslom még Pásztor János Miért tetszik a Django? c. értekezését és az arra érkezett reflexiómat.)

Alapkiszerelésben tud (sorrendre való tekintet nélkül, címszavakban): űrlap kezelés, gyorstárazás, felhasználó kezelés, munkamenet kezelés, jogosultság kezelés, ORM, URL diszpécser, CSRF kivédés, RSS generálás, többnyelvűség, egységteszt keretrendszer, halom utility függvény (amelyek nem Django-s projektben is használhatók), illetve („batteries included”) adminisztrációs felület, egységes üzenet rendszer, hozzászólások, oldaltérkép, bla-bla.

György a vázlatában kiemeli az MVC szemléletet. (Anno én is kiemeltem, és Szilveszter is hivatkozik rá.) Mindazonáltal mai fejjel és a megszólított közönség ismeretében úgy gondolom, szerintem ez nem fontos. Nem fontos annyira, amennyire hangsúlyozott. (Pláne, hogy weben nehezen értelmezhető a hagyományos MVC, ahogy a Django is inkább MTV-nek nevezi ezt.) Kezdők felé úgy fogalmaznám, hogy a Django korszerű objektum orientált tervezési minták mentén felépített keretrendszer, amely megköveteli, de egyúttal bevezeti és segíti is a fejlesztőt ezen minták használatában.

Ebből a szempontból György a django.hu-n publikált háromrészes Django bevezetője például kiváltképp értékes. Míg a hivatalos és nagyszerű tutorial egyből – az általam kezdőknek gondoltak számára témaidegen – modellekkel bíbelődik, addig György a „megszokott” módon hello world-ot printel a képernyőre Django köntösben. Felépít egy egyszerű, érthető, PHP-ból érkezők számára ismerősnek ható logikájú alkalmazást, majd a cikksorozat záró fejezetében bevezeti a modelleket, és megmutatja, hogy lehet azok használatával szintet lépni. Hogy jobb legyen a kódunk. Hogy jobb programozók legyünk. Hogy ma is tanuljunk valamit. (A Django fennhangon artikulált contrib.admin komponense is akkor nyer igazán értelmet, ha a modellek szerepe és célja tisztázott.)

python manage.py runserver, WSGI? PHP-s szárnybontogató fejlesztőknek talán érdekesség, hogy nincs index.py. Olyanannyira, hogy a böngészőben a http://localhost/index.py nem értelmezhető. A mod_php nyújotta kényelem és a jobbára .htaccess-es Rewrite szabályokon alapulú URL feldoldás gyakorlata számos problémát elfed, amivel más rendszerek irányába kacsintáskor szembesül a fejlesztő. A kezdő lökést a djangos „XAMMP”-ok megadhatják: Instant Django, Bitnami DjangoStack.

Végül – és a listát nyitva hagyva a számotokra – amúgy NewTech meetuposan: és mi mindebben az üzleti modell? Lesz állásod.

 
1

Koszi

dyuri · 2010. Dec. 2. (Cs), 10.39
Igen, kb. ezekre a dolgokra gondoltam en is, az a problemam, hogy egy attekintest szeretnek adni, figyelmet felkelteni, kedvet csinalni, es nem szeretnek tulzottan a reszletekbe belemenni, mert kb. vegtelen hosszan lehetne meselni, mikozben egy ilyen eloadasnak nem illene 45 percnel hosszabbnak lennie.

Mindenesetre koszi, es hozzaszolasokban is szivesen latom, hogy ki milyen temarol szeretne djangoval kapcsolatban hallani - ha nem is egy ilyen attekinto jellegu eloadas kapcsan, hanem kesobb, vagy pl. cikk formajaban.
2

Én Symfony keretrendszert

virág · 2010. Dec. 3. (P), 00.11
Én Symfony keretrendszert használok PHP-ban, Django-t Pythonban és mindkettőt nagyon szeretem, a Symfony 2-es verzióját is tesztelgetem, nagyon felgyorsult, de még erősen béta, tele félkész dolgokkal, ezt csak azért írom, mert a Django egyik nagy erőssége szerintem, hogy Pythonban készült, ami - szubjektív véleményem szerint, sok tekintetben fejlettebb és jobban átgondolt és nem utolsósorban szebben megvalósított, mint a PHP :) és ettől a Django is szebb, robosztusabb és tömörebb érzést nyújt.
Amit kifelejtettél (azt hiszem) a Djangoval kapcsolatban az az, ami a Symfonyban (pl. a Yii-ben is, de szerintem ott nem átgondolt és nem ennyire szép) is megvan: az ún. "admin generátor", vagyis CRUD felületek automatikus és konfigurálható létrehozása az ORM alapján, ezt a Django is tudja (nem is akárhogyan), és ez szerintem nagyon költséghatékony, mert időt és hibakeresést, vagyis pénzt spórol.
Én így látom.
A Python és a Django keretrendszer nekem szórakozásnak, kikapcsolódásnak indult és nagyon megszerettem, mindenkinek csak ajánlani tudom, de ahogy látom, nem kell ajánlgatni :), mert egyre népszerűbb és talán rövid időn belül meg fogja szorongatni a PHP-t, illetve a PHP-s keretrendszereket, ha szabad ilyen meggondolatlan jóslással élnem.
+ úgy hiszem, hogy a kezdő fejlesztőknek nem árt ha PHP mellett Pythont is tanulgatnak. Nem írom le, hogy miért, mindenki gondolja hozzá a miérteket :)
3

Köszi

anti81 · 2010. Dec. 8. (Sze), 20.08
PHP-sként bejegyzésed nyomán elkezdtem foglalkozni Pythonnal. Indításként Python zsebkönyvet olvastam el. Nem tudok mást mondani, ez a nyelv egyszerűen k...a jó! Köszi, Gábor!
4

Dive Into Python

Török Gábor · 2010. Dec. 13. (H), 00.47
A Dive Into Pythont tudom még javasolni.
6

Hát ez maga az álom

Poetro · 2010. Dec. 13. (H), 14.36
Eddig nem ástam magam bele mélyebben a Python-ba, de ez alapján a könyv után biztosan megteszem. Ez a nyelv gyönyörű. Eléggé hasonlít a JavaScript-re, pont annyira hogy azok a részek, amiket utálok például a PHP-ben nincsen benne. És minden objektum.
7

És minden objektum. Engem

kuka · 2010. Dec. 14. (K), 11.00
És minden objektum.

Engem éppen ez zavar össze: ha minden objektum, akkor miért nem minden tulajdonságukat metódusokkal érjük el? Például:
lista=['foo','bar']
# a lista első olyan elemének indexe, amelynek értéke 'bar'
lista.index('bar')
# a lista hossza
len(lista)
Miért külső függvénnyel kérdezzük le a méretet és nem metódussal? Számomra lista.len() volna a logikus. Elismerem, a Python is szép, de az ilyen furcsaságok miatt valahogy mégsem melegedtünk össze. És ezért is olvasom immár negyedik hónapja a Dive Into Pythont.
8

Ezt a kérdést már mások is

Török Gábor · 2010. Dec. 14. (K), 12.00
Ezt a kérdést már mások is feltették. (:


És Guido is megválaszolta a kérdést: Why does Python use methods for some functionality (e.g. list.index()) but functions for other (e.g. len(list))?

Zanzásítva a döntés oka, hogy a len()-t a Python az összeadás operátorohoz hasonló, egyszerű műveletnek tekinti. Hogy miként értelmezhető két objektum összege, az objektum __add__() metódusa adja meg, miképp a hosszát pedig a __len__()-nel lehet definiálni.

Én nem tartom bajnak, hogy nem a javában megszokott vonalat viszi minden nyelv.
10

Én nem tartom bajnak, hogy

kuka · 2010. Dec. 14. (K), 12.59
Én nem tartom bajnak, hogy nem a javában megszokott vonalat viszi minden nyelv.
Én meg egyenesen szerencsének tartom. >:) (kuka valahogy nem szokta meg a Java vonalát.)

Csakhogy jobban szeretem az intuitív dolgokat. (Például az olyant sem díjazom, hogy PHP-ben a karakterlánc kezelő függvények egy része str, más része str_ előtagot kapott, vagy hogy a karakterláncban kereső függvények paraméterei $haystack, $needle sorrendben vannak, a tömbben kereső függvények paraméterei meg fordítva.)

Köszönöm a magyarázatot és az ajánlott házi olvasmányt.
9

Metódusok

Poetro · 2010. Dec. 14. (K), 12.08
Én csak 2 napja olvasom, de ez azért átjött:

Használhatom az objektumok speciális függvényét:
>> ['spam', 'eggs'].__len__()
2
És használhatom a beépített függvényeket:
>> len(['spam', 'eggs'])
2
5

O'Reilly Head First

Trudy · 2010. Dec. 13. (H), 09.31
O'Reilly Head First sorozatában most jelent meg a Python ,szerintem kezdőknek tökéletes.