Domanda

Dovrei provare ad aggiornare effettivamente la mia app esistente, o semplicemente riscriverla principalmente da zero, salvando quali pezzi (modelli, ecc.) posso?

È stato utile?

Soluzione

Anche se questo dipende da quello che stai facendo, la maggior parte delle applicazioni dovrebbe essere in grado di aggiornare e quindi riparare tutto ciò che si rompe. Nella mia esperienza, le cose principali che ho dovuto correggere dopo un aggiornamento sono

  1. Modifiche ad alcune cose funky con modelli, come la sintassi per le seguenti chiavi esterne.

  2. Una piccola serie di modelli cambia, in particolare l'escaping automatico.

  3. Tutto ciò che dipende dalla struttura specifica degli interni di Django. Questo non dovrebbe essere un problema a meno che tu non stia facendo cose come la modifica dinamica degli interni di Django per cambiare il loro comportamento in un modo necessario / conveniente per il tuo progetto.

Per riassumere, a meno che tu non stia facendo un sacco di cose davvero strane e / o complesse, un semplice aggiornamento dovrebbe essere relativamente indolore e richiedere solo alcune modifiche.

Altri suggerimenti

Upgrade. Per me è stato molto semplice: cambia __str __ () in __unicode __ () , scrivi admin.py di base, e il gioco è fatto. Inizia a eseguire la tua app su 1.0, testala e quando riscontri un errore usa la documentazione su retrocompatibile modifiche per vedere come risolvere il problema.

Aggiorna la tua app. Il passaggio da 0,96 a 1,0 è stato enorme, ma in termini di modifiche incompatibili all'indietro dubito che la tua app ne abbia addirittura il 10%.

Ero su trunk prima di Django 1.0, quindi la transizione per me è stata nel tempo, ma anche allora le uniche cose importanti che ho dovuto cambiare sono state newforms, newforms-admin, str () in unicode () e maxlength a max_length

La maggior parte delle altre modifiche erano nuove funzionalità o riscritture di backend o cose che come qualcuno che stava costruendo siti Web di base non si avvicinava nemmeno.

Solo i siti più semplici sono facili da aggiornare.

Aspettati un vero dolore se il tuo sito si trova per non ASCII parte del mondo (leggi: ovunque al di fuori degli Stati Uniti e del Regno Unito). Il cambiamento più doloroso in Django è stato il passaggio da bytestring a oggetti unicode internamente - ora devi trovare tutti i luoghi in cui usi i bytestring e cambiarlo in unicode. Il caso peggiore è il rendering del modello, non saprai mai di aver dimenticato di cambiare una variabile fino a quando non ottieni UnicodeError.

Altra cosa degna di nota: i manipolatori ( oldforms ) sono spariti e non hai altro modo che riscrivere tutte le parti con i moduli ( newforms ).

Se questo è il tuo caso e il tuo progetto è più grande di 2-3 app, sarei piuttosto riluttante ad aggiornarlo fino a quando non sarà veramente necessario.

Abbiamo eseguito l'upgrade in un processo in più passaggi e ne sono abbastanza soddisfatto. L'applicazione in questione era di circa 100.000 LoC e gestiva diverse funzioni aziendali core con molte interfacce verso sistemi legacy. Abbiamo lavorato così:

  1. Aggiornamento a django 0.97-post unicode fondersi. Risolvi tutti i problemi di Unicode
  2. refactificare l'applicazione in app riutilizzabili, aggiungere test. Questo ci ha lasciato con 40.000 LoC nell'applicazione / progetto principale
  3. Esegui l'upgrade alla fusione autoexcape django 0.97-post. Risolvi l'escaping automatico nelle app riutilizzabili create in 3. Quindi risolvi i problemi di escape automatico rimanenti nell'applicazione mian.
  4. Aggiorna alla 1.0. Ciò che rimaneva era principalmente risolvere il problema dell'amministratore.

L'intero processo ha richiesto circa 6 mesi in cui dovevamo gestire un ramo di produzione legacy sui nostri server mentre portavamo un altro ramo su 1.0. Nel fare ciò, abbiamo anche aggiunto funzionalità al ramo di produzione.

L'unione finale è stata molto meno complicata del previsto e ha richiesto circa una settimana per la fusione, la revisione, il test e la correzione di 4 programmatori. Abbiamo quindi lanciato e per circa una settimana siamo stati morsi da bug precedentemente imprevisti.

Tutto sommato sono abbastanza soddisfatto del risultato. Ora abbiamo una base di codice molto migliore per ulteriori sviluppi.

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