Domanda

ho praticamente provato ogni framework web Python che esiste, e mi c'è voluto molto tempo per rendersi conto che non c'era un quadro pallottola d'argento, ognuno aveva i suoi vantaggi e svantaggi. Ho cominciato con Snakelets e di cuore è piaciuto essere in grado di controllare quasi tutto ad un livello inferiore senza molto confusione, ma poi ho scoperto TurboGears e mi sono state usando (1.x) da allora. Strumenti come passerella e la console web hanno un valore inestimabile per me.

Ma con TurboGears 2 in uscita che porta il supporto WSGI, e dopo aver letto su dibattiti religiosi tra il Django e campi WSGI, sono davvero combattuto tra "farlo nel modo giusto" , per esempio, l'apprendimento WSGI, spendere tempo prezioso a scrivere le funzionalità che già esiste in Django e altri framework full-stack, anziché utilizzare Django o un quadro di riferimento di alto livello che fa tutto per me. Gli aspetti negativi con questi ultimi che posso vedere sono abbastanza evidenti:

  1. Non sto imparando nulla nel processo
  2. Se mai bisogno di fare nulla di livello inferiore che sta per essere un dolore
  3. L'overhead necessario per solo un sito di base che utilizza l'autenticazione è folle. (IMO)

Quindi, credo che la mia domanda è, che è la scelta migliore, o è solo una questione di opinione, e dovrei aspirare e usare Django se raggiunge quello che voglio con il minimo sforzo (voglio l'autenticazione e un interfaccia CRUD al mio database)? Ho provato Werkzeug, Glashammer, e gli amici, ma AuthKit e Repoze mi ha spaventato, così come il numero di passaggi necessari per l'installazione solo l'autenticazione di base. Ho guardato Piloni, ma la documentazione sembra carente, e quando si fa riferimento funzioni semplici come l'autenticazione o un'interfaccia CRUD, varie pagine wiki e documentazione sembrato contraddirsi a vicenda, con diversi hack per le versioni e così via.


Grazie a S. Lott per aver ricordato che non sono stato abbastanza chiaro. La mia domanda è: quale dei seguenti è utile nel lungo periodo, ma non dolorosa nel breve (ad esempio, una sorta di via di mezzo, chiunque?) - Per saperne di WSGI, o di attaccare con un quadro "batterie incluse"? In quest'ultimo caso, gradirei un suggerimento sul fatto che avrei dovuto dare un altro tentativo Django, bastone con TurboGears 1.x, o avventurarsi in qualche altro quadro.

Inoltre, ho provato CherryPy, ma non riuscivo a trovare una buona applicazione CRUD abbastanza che ho potuto plop e usare subito.

È stato utile?

Soluzione

Suggerisco di prendere un altro sguardo a TG2. Penso che le persone non sono riuscite a notare alcuni dei passi avanti che sono stati fatti rispetto all'ultima versione. A parte il WSGI crescente pila di utilità disponibili ci sono alcuni elementi TG2-specifici da considerare. Qui ci sono un paio di punti salienti:

TurboGears Amministrazione del sistema - Questa interfaccia CRUD al database è pienamente personalizzabile utilizzando una classe di configurazione dichiarativa. Si è integrato anche con Dojo per darvi tabelle infinitamente scorrevoli. validazione lato server è anche automatizzata. L'interfaccia di amministrazione utilizza gli URL riposante e verbi HTTP che significa che sarebbe stato facile per la connessione a programatically utilizzando gli standard del settore.

CrudRestController / RestController - TurboGears fornisce un modo strutturato per gestire servizi nel controller. fornendo la possibilità di utilizzare i verbi HTTP standard semplicemente estendendo la nostra RestController. Combina Sprox con CrudRestController, e si può mettere CRUD ovunque nella vostra applicazione con le forme generate automaticamente completamente personalizzabili. TurboGears ora supporta tipi MIME come estensioni di file nell'URL, in modo da poter avere il controller rendere .json e .xml con la stessa interfaccia che utilizza per il rendering html (restituzione di un dizionario da un controllore)

Se si fa clic sui link si vedrà che abbiamo una nuova serie di documenti costruito con sfinge che è più ampia rispetto la documentazione del passato.

Con la migliore web server , ORM e (s) (scegliere il proprio) sotto il cofano, è facile capire perché TG ha senso per le persone che vogliono andare avanti rapidamente, e hanno ancora la scalabilità come il loro sito cresce.

TurboGears è spesso visto come un tentativo di colpire un bersaglio in movimento, ma siamo coerenti sulle versioni, il che significa che non dovrete preoccuparvi di lavorare fuori del tronco per ottenere le ultime funzioni necessarie. Venendo al futuro:. Più TurboGears estensioni che permetteranno l'applicazione per crescere funzionalità con la facilità dei comandi paster

Altri suggerimenti

  

i dibattiti religiosi tra i campi di Django e WSGI

Sembrerebbe come se fossi un po 'po' confuso su ciò che è e ciò che WSGI Django è. Dire che Django e WSGI sono in competizione è un po 'come dire che C e SQL sono in competizione:. Si sta confrontando mele e arance

Django è un framework, WSGI è un protocollo (che è supportato da Django) per come il server interagisce con il quadro. Ancora più importante, imparare ad usare direttamente WSGI è un po 'come imparare il montaggio. E 'una grande esperienza di apprendimento, ma non è davvero qualcosa che si dovrebbe fare per il codice di produzione (né è stato destinato ad essere).

In ogni caso, il mio consiglio è di capirlo da soli. La maggior parte dei quadri hanno un "fare un wiki / blog / sondaggio tra un'ora" tipo di esercizio. Trascorrere un po 'di tempo con ognuno e capire quale ti piace di più. Dopo tutto, come si può decidere tra diversi quadri se non siete disposti a provare a giocare?

La tua domanda sembra essere "vale la pena di apprendimento WSGI e di fare tutto da soli", oppure utilizzando un "quadro completo stack che fa tutto per te."

Direi che è una falsa dicotomia e c'è un terzo modo evidente. TurboGears 2 cerca di fornire un percorso agevole da un "fare tutto per te" quadro stile fino ad una comprensione di WSGI middleware, e la capacità di personalizzare quasi ogni aspetto del quadro in base alle esigenze della vostra applicazione.

Non possiamo avere successo in ogni luogo ad ogni livello, ma soprattutto se avete già avuto qualche esperienza TurboGears 1 Penso che la curva di apprendimento TG2 sarà molto, molto facile in un primo momento e avrete la possibilità di andare più in profondità esattamente quando ne avete bisogno.

Per affrontare i vostri problemi particolari:

  • Noi forniamo un sistema di autorizzazione, fuori dalla scatola che corrisponde a quello a cui siete abituati da TG1.
  • Noi forniamo un out of the box "Django admin" come l'interfaccia denominata tgext.admin, che funziona alla grande con dojo di fare un foglio di calcolo di fantasia come l'interfaccia di default.

Mi piacerebbe anche affrontare un paio di altre opzioni che sono là fuori e parlare un po 'sui benifits.

  • CherryPy. Credo che CherryPy è un grande server web e una bella web-quadro minimalista. Non è basata su WSGI internamente, ma ha un buon supporto WSGI anche se non vi fornirà l'esperienza "stack completo". Ma per configurazioni personalizzate che hanno bisogno di essere sia veloce e non particolarmente adatti ai valori predefiniti forniti da Django o TurboGears, è una grande soluzione.

  • Django. Credo che Django è un sistema molto bello, tigtly integrato per lo sviluppo di siti web. Se l'applicazione e lo stile di lavoro si adatta bene al suo interno di configurazione standard può essere fantastico. Se tuttavia è necessario ottimizzare l'utilizzo DB, sostituire il linguaggio di template, utilizzare un modello di autorizzazione utente diverso o comunque fare le cose in modo diverso si può molto probabile trovare se stessi a combattere il quadro.

  • Piloni Piloni come CherryPy è un grande web-quadro minimalista. A differenza di CherryPy è WSGI abilitato attraverso l'intero sistema e fornisce alcuni valori di default sensati come SQLAlchemy e Mako che possono aiutare a scalare bene. I nuovi documenti ufficiali sono di qualità molto migliore rispetto ai vecchi documenti wiki, che sono ciò che ti sembra di aver guardato.

Hai dato un'occhiata a CherryPy. E 'minimalista, ma efficace e semplice. E 'a basso livello sufficiente per non esso per ottenere in loro modo, ma abbastanza alta da nascondere complessità. Se ricordo bene, TurboGears è stata costruita su di esso.

Con CherryPy, si ha la scelta di tutto ciò. (Quadro modello, ORM, se voleva, di back-end, ecc.)

  

Ulteriori WSGI

WSGI è assurdamente semplice .. E 'fondamentalmente una funzione che sembra ..

def application(environ, start_response) pass

La funzione viene chiamata quando si riceve una richiesta HTTP. environ contiene vari dati (come la richiesta URI etc etc), start_response è una funzione callable, utilizzato per impostare le intestazioni.

Il valore restituito è il corpo del sito web.

applicazione def (environ, start_response):     start_response ( "200 OK", [])     tornare "..."

Questo è tutto quello che c'è da fare, davvero .. Non è un quadro, ma più di un protocollo per il web-framework da usare ..

Per la creazione di siti, usando WSGI è non il "modo giusto" - utilizzando strutture esistenti è .. ma, se si sta scrivendo un Python Web framework quindi utilizzando WSGI è assolutamente la strada giusta. .

Quale quadro si utilizza (CherryPy, Django, TurboGears ecc) è fondamentalmente preferenze personali .. GIOCA intorno a ciascuno, vedere quale ti piace di più, quindi utilizzarlo .. C'è una domanda StackOverflow (con una grande risposta) su questa "raccomandazione per framework Python straight-forward",

Avete verificato web2py? Dopo aver recentemente valutando molti framework web Python di recente ho deciso di adottare questo. Verificate anche Google App Engine, se non l'hai già.

Direi che la risposta corretta dipende da ciò che realmente vogliono e hanno bisogno, come quello che sarà utile nel lungo periodo dipende da quello che vi serve nel lungo periodo. Se il vostro obiettivo è quello di ottenere le applicazioni implementate al più presto quindi il percorso 'semplice', vale a dire. Django, è sicuramente la strada da percorrere. Il valore di un sistema ben collaudato e ben documentato che esattamente quello che vuoi non può essere sottovalutato.

D'altra parte se si ha il tempo di imparare una varietà di cose nuove che possono applicarsi in altri domini e vogliono avere la portata più ampia di personalizzazione poi qualcosa come TurboGears è superiore. TurboGears offre la massima flessibilità, ma si è necessario spendere un sacco di tempo a leggere documenti esterni per cose come Repoze, SQLAlchemy, e Genshi per ottenere qualcosa di utile fare con esso. La documentazione TG2 è volutamente meno dettagliato la documentazione TG1 in alcuni casi perché è ritenuto che i documenti esterni sono migliori di quelli di una volta. Se questo genere di cose è un ostacolo o un investimento dipende dalle proprie esigenze.

Django è sicuramente la pena di apprendimento, e suona come si adatterà i vostri scopi. L'interfaccia di amministrazione si tratta con è facile alzarsi e correre, e si fa uso di autenticazione.

Per quanto riguarda il "nulla di livello inferiore", se si intende SQL, è del tutto possibile per spingere sql in voi query con la parola chiave in più. Stilisticamente, si cerca sempre di evitare che, per quanto possibile.

Per quanto riguarda "non imparare niente" ... la vera domanda è se la vostra preferenza è quella di essere in primo luogo imparare qualcosa di livello inferiore o di livello superiore, che non è certo una domanda nessuno qui può rispondere per voi.

Piloni sembra un ottimo strumento per me:

  • un quadro vero e proprio web (CherryPy è solo un server web),
  • piccola base di codice - riutilizzo di altri progetti,
  • scritto interamente con WSGI in mente, a base di pasta,
  • consente di codificare l'applicazione subito e toccare i bit di basso livello, se è necessario,

Ho usato CherryPy e TurboGears e guardo molti altri quadri, ma nessuno di loro erano così leggero e produttivo Piloni è. Controllare il a Google .

Sono un fan TurboGears, e questo è esattamente il motivo per cui:. Un bel compromesso tra controllo e fare le cose bene vs. facile

Dovrete fare la vostra propria mente, naturalmente. Forse si preferisce imparare meno, forse di più. Forse le aree che mi piacciono conoscenza / controllo (banca dati per esempio), non potrebbe interessare di meno. E non fraintendetemi. Non sto caratterizzare eventuali quadri come necessariamente difficile o sbagliato. E 'solo il mio giudizio soggettivo.

Anche io consiglierei TurboGears 2, se possibile. Quando si esce, penso che sarà molto meglio di 1,0 in termini di ciò che ha selezionato per default (Genshi, tralicci, SQLAlchemy)

Vorrei suggerire per TurboGears 2. Hanno fatto un lavoro fantastico di integrare meglio di Python mondo.

WSGI: Supponendo che si sta sviluppando moderatamente complessi progetti / soluzioni di business a TG2 o qualche altro quadro dire Grok. Anche se questi quadri supporta WSGI vuol dire uno che sta usando questi quadri devono imparare WSGI? Nella maggior parte dei casi la risposta è No. Voglio dire, è bene avere questa conoscenza non c'è dubbio.

conoscenza WSGI è probabilmente è più utile in casi come

  • che si desidera utilizzare alcuni middleware o qualche altro componente che non viene fornito come parte dello stack standard per esempio. Authkit con TG o Grok senza ZODB .
  • si sta facendo qualche integrazione.

CherryPy è buona, ma pensare di gestire il database impegna / rollback alla fine delle operazioni, JSON esponendo, convalide in questi casi TG, Django come quadri fanno tutto per voi.

web2py è la salsa segreta qui. Da non perdere il check it out.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top