Se fossi in te, probabilmente guarderei prima se una soluzione basata sul web basata su Django fa il trucco. Se ti serve un po 'di più, aggiungi jQuery al mix. Se fornisce troppo poche funzionalità, vai su PyQt. Se hai un sacco di applicazioni molto piccole, scegli un mix di tecnologie. Di seguito, trovi il mio (un po 'lungo) ragionamento per questa raccomandazione.
Webapp vs. applicazione desktop
Un anno fa, abbiamo avuto un business db e avevo bisogno di un front-end. Dovevamo decidere quale tecnologia utilizzare per il front-end.Abbiamo preso in considerazione:
- PyQt
- basata sul Web (cercare here per una panoramica di web frame-lavori per Python)
i vantaggi per PyQt dal nostro punto di vista:
- Esperienza C++ precedente con Qt da cui sapevamo che Qt è adatto per l'attività.
- Tutti gli strumenti necessari inclusi.
- Facile sviluppare clienti ricchi.
Abbiamo tuttavia deciso contro PyQt e per una soluzione basata sul Web. Ragioni erano:
- I requisiti per il front-end sono stati modesti e facile da fare all'interno di un browser (segnalazione per lo più, alcuni moduli per l'immissione di dati o l'esecuzione di funzioni).
- La distribuzione dell'applicazione (e nuove versioni, correzioni di errori, ecc.) è molto più semplice poiché tutto accade solo sul server in un ambiente controllato.
- Il controllo di accesso/autenticazione/diritti è "gratuito" poiché fa parte del server (nel nostro caso Apache utilizza l'autenticazione di Active Directory) e il browser, che è importante per noi.
- L'applicazione richiede comunque la connessione al server e non è necessario memorizzare nulla sul lato client.
In poche parole: ricco di funzioni front-end con un sacco di funzionalità in un ambiente di distribuzione controllata sono probabilmente più facile da implementare con Qt. Per i nostri front-end leggeri, una soluzione basata su server ci è sembrata migliore.
Quale framework web?
Ora che avevamo deciso una tecnologia, dovevamo scegliere un quadro. Abbiamo ricercato un po ', e guardato due alternative in dettaglio:
- Django
- Una pila di software costituito da CherryPy come dispatcher (per abbinare le richieste HTTP alla funzionalità e tutta la roba correlata), Mako come template libreria per generare pagine Web, SQLAlchemy come ORM e jQuery per la funzionalità lato client.
Abbiamo valutato le due alternative e alla fine abbiamo optato per la seconda. La decisione è stata dettata dai nostri requisiti di front end davvero "leggeri e leggeri" (un sacco di applicazioni molto piccole). Una pila di software - che possiamo mixare e abbinare secondo necessità - ci è sembrata migliore. Possiamo riutilizzare SQLAlchemy in situazioni in cui non abbiamo bisogno di un front-end Web, possiamo semplicemente utilizzare CherryPy senza una libreria di modelli e un ORM e così via. In molti altri casi, sceglierei comunque Django su questo stack.
Per riassumere:
- una grande, complessa applicazione -> PyQt
- una serie di relativily simile, straigtforward rapporti, forme, ecc, con un look-and-feel -> Django
- un insieme relativamente eterogeneo di cose che differiscono ampiamente nei requisiti e nella tecnologia o ri-utilizzo di alcune tecnologie utilizzate in altre circostanze -> mix di tecnologie come necessario
+1: può essere fornito in bundle per l'esecuzione sul desktop come se fosse una singola applicazione autonoma. Google "Django Desktop" per molti suggerimenti. –