2012-04-16 11 views
11

Sono uno sviluppatore dilettante con una piccola esperienza in PHP.Programmazione web Python

Recentemente ho imparato Python, devo ammettere che è fantastico come linguaggio di programmazione e le sue grandi librerie, ma usarlo per lo sviluppo web sembra essere un grande rompicoglioni. Per quanto riguarda ciò che ho letto, devo usare CGI, mod_wsgi, ecc. Per distribuire (http://docs.python.org/howto/webservers.html), Riavviare il server per vedere le modifiche (http: // stackoverflow.com/questions/581038/python-web-programming)

La mia domanda è, Python viene utilizzato così ampiamente per lo sviluppo web, perché non è semplice come PHP?

cioè mi piacerebbe scrivere index.py:

print """ 
<html> 
<head> 
<title>Hello world</title> 
</head> 
<body> 
Hello world 
</body> 
</html>""" 
+1

Perché non l'hai fatto. –

+4

Non ho creato PHP né – Jelly

+7

@jeremynealbrown Non è una cattiva domanda ... Lo vedo come un nuovo Pythonista che cerca di scoprire quale parte dell'immagine mancano. Mi ci è voluto un po 'per trovare i pezzi che hanno reso Python un linguaggio web veramente buono. Forse la domanda potrebbe essere formulata meglio ... – Endophage

risposta

6

[Se] Python viene utilizzato così ampiamente per lo sviluppo Web, perché non è semplice come PHP? cioè mi piacerebbe scrivere index.py ...

Python può essere semplice come PHP, secondo il vostro esempio. Il modo più semplice per rendere il lavoro di cui sopra è quello di utilizzare CGI (e chiamare il file index.cgi piuttosto che index.py, allora lo script funzionano bene se si dovrebbe davvero specificare il tipo di contenuto prima, in questo modo:.

print 'Content-type: text/html' 

Ciò si applicherebbe in PHP quanto Python. Python's CGI module avranno installato e funzionante molto rapidamente.

per quanto riguarda quello che ho letto, ho usare CGI, mod_wsgi, ecc per distribuire

Normalmente sceglieresti l'uno o l'altro, e realisticamente molto probabilmente sceglierai un framework basato sul WSGI più moderno e non ti preoccupare delle cose di basso livello. Ma se non vuoi, non devi preoccuparti di queste interfacce di basso livello.

riavviare il server per vedere i cambiamenti

non

Probabilmente. Il riavvio del server è una limitazione della configurazione del framework e della distribuzione e in genere non è richiesto. Se si utilizza mod_python, ciò può essere applicato, ma in genere no (molti framework supportano il ricaricamento automatico, ad esempio).

Python ha una grande ricchezza di risorse per lo sviluppo web. Esistono sistemi bare-bones (ad esempio CGI, mod_wsgi), sistemi leggeri (ad esempio CherryPy) e intere strutture (ad esempio Zope). Puoi scegliere quello più adatto alle tue esigenze.

Essere in grado di creare un file semplice e produrre un po 'di output può aiutare a ottenere qualcosa che vada rapidamente, ma non è davvero un segno di un quadro ricco, maturo e ricco di funzionalità. Certo, puoi iniziare a mostrare qualcosa subito, ma allora? All'improvviso dovrai importare o scrivere tutti gli stessi tipi di funzionalità forniti dai framework web. Per un'applicazione web non banale, è necessaria una struttura non banale.

Ad esempio, qualcosa come Django offre una struttura di persistenza, un'interfaccia di amministrazione generata automaticamente, una lingua allettante, un sistema di invio di URL e molto altro. Puoi concentrarti sulla logica dell'app e non preoccuparti dei dettagli di livello inferiore. Django è un buon punto di partenza, in quanto ha una grande documentazione e il tutorial ti farà andare molto velocemente.

10

prima alla sua domanda sul perché Python non è così facile per lo sviluppo web come PHP: Non è stato progettato per questo. PHP ha lavorato molto per renderlo un buon linguaggio per scrivere pagine HTML, incluso mod_php per apache. Python, anche se è un linguaggio web molto capace, è anche capace di molto più di PHP. Ad esempio, la maggior parte del software di Dropbox, sia il client desktop sia il codice lato server è Python. Uso Python nel mio lavoro quotidiano e l'ho usato per integrare il codice C legacy in un nuovo codice Python tramite Cython.

In movimento. Ci sono una serie di framework Python che possono rendere la tua esperienza di sviluppo web molto meno complicata. 2 di nota che sono ampiamente utilizzati professionalmente e dagli hobbisti sono Django e Pyramid (precedentemente Pylons). Come nuovo utente, ti consiglio di iniziare con Django, è un ottimo modo per iniziare e può essere utilizzato per siti grandi e complessi (e anche di più) man mano che la tua esperienza cresce.

Troverete che Django e Pyramid includono "server di sviluppo". Questi sono server web scritti in Python che sono impacchettati con i framework per consentire uno sviluppo più veloce. Usando questi server di sviluppo puoi essere subito operativo.

Esistono anche server Web Python puri che sono incredibilmente veloci, robusti e pronti per la produzione. Per distribuire un'applicazione Pyramid su Gunicorn, un ottimo server Python, sono necessarie solo un paio di linee extra nella configurazione Pyramid. In genere si inverserebbe il proxy a questi server Python puri tramite Apache o Nginx.

Se si vuole seguire il percorso del server Apache, è sufficiente mod_wsgi. Servire un sito Python con mod_python o come CGI è un modo un po 'obsoleto per farlo. WSGI definisce uno standard per Python per gestire le richieste Web, pertanto mod_wsgi consente a apache di passare richieste all'applicazione Python nel formato previsto.

Quando si tratta di distribuire Python a un provider di hosting, si deve guardare un po 'più in là rispetto all'hosting PHP, ma c'è un good list gestito sul wiki Python ufficiale. I 4 collegamenti nella parte inferiore hanno fornito elenchi diversi per soddisfare le tue esigenze.

+0

Bel riassunto di Endophage. Voglio solo aggiungere che il principiante Python, dopo aver trovato i bonus che hai menzionato, potrebbe sentirsi nuovamente deluso quando è il momento di distribuire il sito su un server host. Ho scoperto che il mio provider host di budget si adatta facilmente a PHP, ma non a Python. – Smandoli

+0

@Smandoli Questo è un problema comune, tuttavia, il wiki ufficiale di Python mantiene un elenco sostanziale di host Python friendly, l'ho aggiunto alla fine del post. – Endophage

+0

Ci sono luoghi in cui è possibile ospitare applicazioni python gratuitamente. Ne ho menzionato alcuni nella mia risposta. – masnun

0

PHP era destinato esclusivamente allo sviluppo di applicazioni Web, per essere più precisi per la creazione di pagine Home personali (è qui che sono arrivati ​​P, H e P). Python d'altra parte è un linguaggio di programmazione generico. Era pensato per un sacco di cose (e doveva includere ogni tipo di batteria per tutti i tipi di compiti). Quindi, per favore non aspettarti che Python si comporti allo stesso modo di PHP.

Gli script Python autonomi richiedono un bel po 'di sforzi per essere eseguiti. Suggerirei di ritirare un framework web. Potresti voler imparare django (https://www.djangoproject.com/) per cominciare. Potresti anche provare Google App Engine. Oltre a heroku, dotcloud, nuagehq e altri host cloud, la distribuzione di python (e django) è molto semplice e facile.

Spero che ti divertirai a sviluppare applicazioni web con Python! :)

+0

Per inciso, lo spammer -1 sembra aver colpito ancora ... Giuro che qualcuno sta seguendo le mie risposte e poi vota tutti sul post ... – Endophage

+2

PHP sta per PHP: Hypertext Preprocessor, giusto? – VictorKilo

+0

@Endophage Sono stato sorpreso di ottenere un downvote. Questo spiega :) – masnun

1

Come altri hanno già detto, google "python web framework". Ce ne sono parecchi, sono tutti piuttosto diversi. Per iniziare nel modo più veloce (ore), guarderei allo bottle.py.

1

Python utilizzato così ampiamente per lo sviluppo Web, perché non è semplice come PHP?

Perché Hello World non scala. Perché Python non è PHP.Da wikipedia [1][2]:

  • Python è un general-purpose, di alto livello linguaggio di programmazione
  • PHP è un linguaggio di scripting lato server general-purpose originariamente progettato per lo sviluppo web

Python è grande, python è DRY amichevole. Sfortunatamente, quando si tratta di sviluppo web, DRY non è abbastanza. Se in realtà vuoi fare le cose (in modo efficiente): don't reinvent the wheel. Che è stato abbastanza ben sintetizzato here:

Quello che sembra il più grande peccato per me è che tutti sono attualmente ricostruendo questa roba più e più volte e razionalizzazione come una sorta di segreto salsa di vantaggio competitivo quando è veramente infrastrutture - roba che davvero dovrebbe essere standardizzato in modo da poter effettivamente andare in giro a fare le cose nuove e interessanti.

Quindi, utilizzare lo strumento giusto per il lavoro giusto, se si va il modo in pitone:

sì è più complicato di un mondo ciao ma ricordate there ain't no such thing as a free lunch. Sei uno sviluppatore amatoriale, non sei un programmatore professionista e un amministratore di sistema e un database di amministrazione e un designer e un architetto di sistema, ecc Non essere troppo timido per stand on the shoulders of giants perché ora, è gratis. Per favore, non costruire niente di meno che a modern web app.

Inoltre, PHP non è più popolare perché era [1][2], cfr. PHP's fractal bad design, PHP hammer, ecc.

Problemi correlati