Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Python -- Web Development  (gelezen 1248 keer)

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Python -- Web Development
« Gepost op: 2012/04/12, 10:36:07 »
Hallo,

Ik ben sinds kort met Python begonnen omdat ik zenuwen krijg van PHP en omdat in C++ je eerst het wiel nog moet uitvinden -- wat over het algemeen betere wielen oplevert dan die Python standaard aanbiedt, maar we willen ook eens een keertje echte voortgang van het project zien -- dus ja, Python.

Nu heb ik geen idee van wat Python aanbiedt qua frameworks voor Web Programming en zoals het Python-traditie lijkt zijn er 50.000 verschillende dingen waar ik uit kan kiezen en ik heb geen zin om die allemaal te proberen. (In tegenstelling tot C++, waar er ook 50.000 frameworks zijn die vooral verschillen in "welke string-klasse gebruiken ze", "is het wel C++ of is het C met klassen", "gebruikt het wel alle features van C++", en "welke notatiestandaard gebruiken ze voor namen OH GOODNESS NEE DE MICROSOFT-STANDAARD!!").

Dus ik ga maar eens een keer op mijn favoriete programmeerforum (heh) vragen, aangezien de meeste ervaring hier toch met Python is (voor C++-vragen ga ik "helaas" ergens anders) en ik meermalen te horen heb gekregen hoe fantastisch en geweldig Python wel niet is, hoe het alle problemen van "hoe schrijf ik een programma met zo veel mogelijk exotische syntax" tot wereldvrede en de honger in de wereld kan verhelpen, tot een heuse flamewar toe.

Anyways, gezien jullie waarschijnlijk toch niet alles hebben gelezen wat hier boven staat (ik kan jullie daar niet voor kwalijk nemen, ik heb het ook niet gelezen, alleen maar getypt): weet iemand een goed Python-framework voor web development? Ik zoek iets dat (F)CGI aankan  (of een beter alternatief als dat bestaat), functies heeft om GET, POST, ... te parsen, en kan verbinden met een database, dus eigenlijk zo een beetje wat je met PHP kan.

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline markba

  • Lid
    • http://markbaaijens.nl/
  • Steunpunt: Ja
Re: Python -- Web Development
« Reactie #1 Gepost op: 2012/04/12, 11:38:51 »
Voor een projectje (http://ufw2web.sourceforge.net/) heb ik CherryPy gebruikt.

Je kunt met een minimum aan regels een webservertje bouwen:
http://ufw2web.svn.sourceforge.net/viewvc/ufw2web/trunk/ufw2web.py?revision=8&view=markup

Als je die code zou strippen zou je uitkomen op een regel of 10 of zo.

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #2 Gepost op: 2012/04/12, 17:18:38 »
CherryPy heb ook ik goede ervaringen mee. Het biedt alleen de basisfunctionaliteit, maar persoonlijk vind ik dat een voordeel. Je zit niet vast aan een template engine, en als je geen database nodig hebt is het mooi dat je 'm niet uit hoeft te zetten zeg maar. Een voorbeeldapplicatie is de in OpenTeacher 3.0 ingebouwde codedocumentatiegenerator (die link is de documentatiegenerator in actie, hij documenteert hier zichzelf :P).

Een iets uitgebreider framework dat me goed bevalt en wat meer kan (bijv. OpenID login, templates, websockets) is Tornado. De webapp Just For Learning heb ik erin geschreven. Het werkt i.t.t. CherryPy niet op basis van threads, wat zowel voor- als nadelen biedt. (Voor hoe het dan wel werkt, zie de Tornado-site.)

Als ook dat niet goed genoeg is en je een compleet MVC-framework wilt, is Django dé optie voor zover ik weet. Django is daarnaast uit te breiden met plugins. Voorbeelden van apps zijn de stemapplicatie van Ubuntu NL en de toetsserver van OpenTeacher 3.0 (gebruikt een Django REST-plugin).

Zoals je zelf zei zijn er nog veel meer frameworks. Overstappen van de één op de ander gaat vrij snel, mochten bovenstaande frameworks niet bevallen, pak dan gewoon een andere. (Maar die kans is niet groot, denk ik ;).)

EDIT: Link stemapplicatie Ubuntu NL aangepast naar een recentere versie.
« Laatst bewerkt op: 2012/04/12, 17:57:44 door commandoline »

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #3 Gepost op: 2012/04/12, 20:53:17 »
Ik heb zelf erg goede ervaringen met Django, maar ik zou dit alleen aanraden als je dynamic content wilt hebben (dwz een database achter je website wilt zetten), anders is het overkill. Pylons schijnt ook erg goed te zijn, ook voor dynamische content. Deze gebruikt van SQLAlchemy voor de communicatie met de database en dat is een stuk beter dan de layer van Django.

Offline Basel

  • Lid
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #4 Gepost op: 2012/04/12, 23:23:19 »
Misschien is Turbogears het overwegen waard. Overgens ook alleen als je dynamische content wilt genereren/database nodig hebt. Heb zelf als eens een projectje in Tg1 gemaakt, werkte snel en gemakkelijk naar mijn ervaring. Toen werkten ze nog met CherryPy. In de huidige versie (Tg2) zijn ze overgestapt naar Pylons. Model, view, controller syteem. Model is de database connectie via SQLAlchemy, View doen ze via Ghensi als templating engine en voor de controller wordt pylons gebruikt. Je zit niet vast aan een bepaalde database of templating engine, dit is allemaal aan te passen en wordt ook ondersteund. Wat naar mijn mening een voordeel van Tg is, dat ze niet zelf iets nieuws uit proberen te vinden maar goede/volwassen/actieve projecten samenvoegen als bouwstenen voor het samenstellen van een volledig "webframework" dat op elkaar is ingespeeld om (redelijk) snel een "database driven" en dynamische webpagina te bouwen.

Moet eerlijk bekennen dat ik niet bekend ben met andere Python "frameworks", dus mijn mening kan wat objectiviteit missen wegens het gebrek aan referentie.

Edit: typos
« Laatst bewerkt op: 2012/04/12, 23:27:40 door Basel »

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #5 Gepost op: 2012/04/13, 08:09:45 »
Hmm, ik heb voornamelijk iets nodig dat een get/post-request parst, iets uit een database haalt en een XML-output geeft die met Ajax kan worden opgevraagd. Liefst ook nog iets zodat ik sessie-cookies (zoals in PHP $_SESSION) kan gebruiken.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #6 Gepost op: 2012/04/13, 10:41:52 »
Hmm, ik heb voornamelijk iets nodig dat een get/post-request parst, iets uit een database haalt en een XML-output geeft die met Ajax kan worden opgevraagd. Liefst ook nog iets zodat ik sessie-cookies (zoals in PHP $_SESSION) kan gebruiken.
Dat zou prima met Django moeten gaan. Sessies worden door Django al geregeld, de database connectie ook. Een probleem waar ik tegenaan loop met Django is dat het geen  multi-column indices ondersteund. Maar als je dat niet gebruikt moet het geen probleem zijn. Ajax wordt ook ondersteund, maar dat heb ik nog niet gebruikt (al gebruikt Django het al wel in zijn eigen admin applicatie)

Offline lord4163

  • Lid
    • Simpelbuntu
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #7 Gepost op: 2012/04/13, 12:50:38 »
Volgens mij word Django inderdaad veel gebruikt, volgens mij draait FreeNAS daar ook op ;)
Meer weten over Ubuntu? Bezoek mijn site dan eens:
Simpelbuntu


Offline Basel

  • Lid
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #8 Gepost op: 2012/04/13, 12:57:44 »
Kan ook met Turbogears.

sessie-cookies:
Citaat
Sessions in TurboGears can be backed by the filesystem, memcache, the database or by hashed cookie values. By default the filesystem is used, but in high traffic websites hashed cookies provide a great system for small bits of session data. If you are storing lots of data in the session, memcache is recommended.

Ajax wordt ook standaard ondersteund, bij Turbogears2 wordt dit gedaan via Json.

Via het MVC (model, view, controller) ontwerp is alles standaard gekoppeld en klaar voor gebruik. Database connectie is hier dan ook al klaar voor gebruik en wordt gedaan via SQLAlchemy.

Er staan een berg vergelijkingen tussen Django en Turbogears2 op het web. Ik heb nog niet echt een winaar kunnen vinden tussen de twee (moet bekennen dat het al een paar jaar terug is geweest dat ik die heb gezocht). Het is maar net waar je persoonlijke voorkeur naar uit gaat en wat je exact wil doen. Als je 1 van de twee kiest zit je naar mijn mening wel goed omdat het volgens mij op dit moment de twee populairste volledig ingerichte Python-webframeworks zijn met een grote comunity.

EDIT: Argumentatie iets verduidelijkt.
« Laatst bewerkt op: 2012/04/13, 13:02:01 door Basel »

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #9 Gepost op: 2012/04/13, 14:51:06 »
Voor het echte database werk heb ik de voorkeur voor SQLAlchemy omdat die minder limiterend is. Maar Django is wel erg gemakkelijk. Bij Turbogear heb je net wat meer mogelijkheden, wat positief is voor de controle, maar ten koste gaat van het hoeveelheid werk en moeite die het je kost. Dat is mijn ervaring, het hangt er dus vanaf wat je wilt doen welke het beste is.

Offline SeySayux

  • Lid
    • SeySayux.net
  • Steunpunt: Nee
Re: Python -- Web Development
« Reactie #10 Gepost op: 2012/04/13, 15:34:31 »
Ik ga eens kijken naar Django, voornamelijk omdat ik al van die naam heb gehoord.

Bedankt,

- Sey
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net