2010-02-16 17 views
22

Ho appena iniziato Python e mi stavo chiedendo come avrei fatto a programmare applicazioni web senza la necessità di un framework. Sono uno sviluppatore PHP di esperienza ma ho voglia di provare Python e di solito mi piace scrivere da zero senza la restrizione di un framework.Programma applicazioni Web in python senza un framework?

+4

"restrizione di un quadro".Perché dici che un quadro è una restrizione? PHP è un framework enorme e sofisticato che ti evita di scrivere un sacco di codice noioso. Perché rinunciare a quel livello di potere? Cosa c'è di sbagliato in framework che PHP sia OK ma un altro framework non PHP non è OK? –

+9

PHP non è realmente un framework, è un linguaggio interpretato, ma non un framework. Per me, il più delle volte un framework è una restrizione perché devo fare quello che il framework mi dice che devo fare. Ad esempio, in CakePHP devi nominare controller, viste e modelli con un nome specifico, non devi farlo, ma se non lo fai, allora le cose non si collegano "magicamente", quindi qual è il punto usando la struttura? E i framework sono pieni di funzionalità che non ho bisogno di renderli più lenti. Preferisco scrivere le mie cose (tengo una libreria di tutto il mio codice), sono un maniaco del genere: D –

+1

@Dr Hydralisk: PHP può stare da solo. Tuttavia, quando incorporato in Apache, è sicuramente un framework. Prova a scrivere la tua versione di mod_php "da zero" e vedi tutte le cose che PHP sta facendo automaticamente per te. Il punto di utilizzo di un framework è che ti libera dai dettagli. PHP ti libera da numerosi dettagli di elaborazione HTTP. Molti framework Python ti liberano dai dettagli. I quadri sono "pieni di funzionalità"? Veramente? Puoi aggiornare la tua domanda per identificare in modo specifico le funzioni che non ti piacciono? –

risposta

23

WSGI è lo standard Python per interfacce web server. Se vuoi creare il tuo framework o operare senza un framework, dovresti esaminarlo. Nello specifico ho trovato utile l'articolo Ian Bicking's DIY Framework.

Per inciso, tendo a pensare quadri sono utili e personalmente uso Django, come il modo in Piloni lavori, e hanno utilizzato Bottle in passato per la prototipazione — si consiglia di guardare in bottiglia, se si desidera un soggiorno-out di microfiltraggio a modo tuo.

+5

Grazie, esaminerò. Le persone sono molto veloci nel rispondere qui, adoro questo posto: D –

2

Dovrete esaminare qualcosa come CGI o FastCGI, che fornisce un'API per comunicare al server web.

Google App Engine consente di scrivere semplici app e fornisce anche un server Web locale in cui è possibile provare le cose.

+0

Penso che App Engine sia un ottimo suggerimento. Il framework 'webapp' è piuttosto ridotto, ed è dannatamente facile da installare e utilizzare come un semplice vecchio PHP per l'hosting di merci. –

+0

Stavo guardando in App Engine, sembra interessante. –

3

Una delle strutture più leggere è mod_wsgi. Tutto ciò che di meno sta per essere un'enorme quantità di lavoro analizzando le richieste HTTP per trovare intestazioni e URI e metodi e analizzare l'associazione di query/dati GET o POST, gestire upload di file, cookie, ecc.

Così com'è, mod_wsgi gestisci solo le nozioni di base sull'analisi delle richieste e sulla definizione dei risultati.

Sessioni, cookie, utilizzando un generatore di modelli per le pagine di risposta sarà una quantità sorprendente di lavoro.

Dopo aver avviato questa strada, è possibile che un piccolo supporto di struttura abbia una lunga tradizione.

+0

Mi piace una sfida: D –

+0

Hmmm, mod_wsgi non è tecnicamente un framework, è un adattatore WSGI. Non gestisce nemmeno l'analisi delle richieste HTTP mentre Apache fa tutto ciò per farlo. –

+2

@Graham Dumpleton: "tecnicamente un quadro"? Qual è la definizione tecnica? –

0

Per un programmatore PHP, penso che mod_python sia un buon modo per iniziare senza alcun framework. Può essere usato direttamente come modulo Apache 2. Si possono avere i tag codice (come <? ?> in PHP) e persino output HTML condizionale (HTML all'interno if):

<% 
if x == y: 
    # begin 
%> 

    ... some html ... 

<% 
# end 
%> 

(esempio semplificato tratto da onlamp.com s' Python Server Pages tutorial)

+0

Sembra carino, ma sono anche anti-apache .. C'è qualcosa per Nginx? –

+0

Sembra esserci un modulo wsgi per nginx: http://wiki.nginx.org/NginxNgxWSGIModule – AndiDog

-2

La risposta è "non fare". L'utilizzo di un framework rende il codice più gestibile, scalabile, leggibile, verificabile e modulare.

+0

Come ho detto sopra, mi piace scrivere le mie cose, e quando le scrivo, mi assicuro di seguire tutti quelli cose, sono un po 'perfezionista quando si parla di programmazione (un maniaco dell'ottimizzazione serio, è un dolore). E tengo una libreria per gran parte del mio codice, quindi quando ho bisogno di fare qualcosa, li metto insieme e ho un mini framework personale che ha solo le funzionalità di cui ho bisogno ma che posso comunque aggiungere in seguito se necessario. –

+1

La soluzione NIH corretta (se esiste una cosa del genere) dovrebbe * scrivere un framework *, non per evitare un framework. Essere in grado di introdurre astrazioni ragionevoli (ad esempio, l'uso di un framework) rende fattibile la scrittura di grandi applicazioni. Non so cosa significhi essere "un serio maniaco dell'ottimizzazione, è un dolore", ma non suona come qualcuno che avrei mai voluto noleggiare: il tempo impiegato per ottimizzare il codice è spesso antieconomico e sprecato. Chiarezza, tempo del programmatore, manutenibilità e testabilità di solito valgono la pena di ottimizzare per eccesso di velocità e spazio. –

1

Qui le persone amano le strutture. Una lacuna che ho notato è che Python manca di un modulo handy-dandy per Sessions come libreria built-in, nonostante sia disponibile in PHP e come CGI :: Session in Perl.

Si finirà per fare:

import cgi # if you want to work with forms and such 
import cgitb; cgitb.enable() # to barf up errors to the web 
print 'Content-type: text/html\n\n' # to start off any HTML. 

Si dovrà scrivere cose sessione sul proprio.

+0

Penso che non userò Python per lo sviluppo web, lo userò solo come linguaggio di programmazione generico. Tornerò su PHP e forse darò un'altra prova a Rails (ya so che è un framework .. è l'unico che mi è veramente piaciuto, solo la sintassi Ruby è così fastidiosa). –

Problemi correlati