Pergunta

Devo tentar realmente atualizar meu aplicativo existente, ou simplesmente reescrevê-lo na sua maioria a partir do zero, poupando quais peças (templates, etc) eu posso?

Foi útil?

Solução

Embora isso depende do que você está fazendo, a maioria das aplicações deve ser capaz de apenas atualizar e corrigir tudo o que breaks. Na minha experiência, as principais coisas que eu tinha que consertar depois de uma atualização são

  1. Alterações a algumas das coisas funky com modelos, como a sintaxe para seguir as chaves estrangeiras.

  2. Um pequeno conjunto de alterações do modelo, mais notavelmente auto-escapando.

  3. Qualquer coisa que depende da estrutura específica de internos do Django. Isto não deve ser um problema a menos que você está fazendo coisas como modificar dinamicamente internos do Django a mudar seu comportamento de uma forma que é necessário / conveniente para o seu projeto.

Para resumir, a menos que você está fazendo um monte de coisas realmente estranho e / ou complexo, uma simples atualização deve ser relativamente indolor e necessita apenas de algumas alterações.

Outras dicas

Upgrade. Para mim, foi muito simples: a mudança __str__() para __unicode__(), escrever admin.py básico, e feito. Basta começar a executar o seu aplicativo em 1.0, testá-lo, e quando você encontrar um uso de erro a documentação sobre trás-incompatíveis mudanças para ver como corrigir o problema.

Apenas atualizar seu aplicativo. O interruptor de 0,96-1,0 era enorme, mas em termos de Trás incompatível muda duvido seu aplicativo ainda tem 10% deles.

Eu estava no porta-malas antes de Django 1.0 para que eu a transição para mim foi ao longo do tempo, mas, mesmo assim, os únicos grandes coisas que eu tive que mudar estavam newforms, newforms-admin, str () para unicode () e maxlength para max_length

A maioria das outras mudanças foram novas funcionalidades ou regravações de back-end ou coisas que, como alguém que estava a construir sites básicos nem sequer chegar perto.

Somente sites mais simples são fáceis de atualizar.

Esperar dor real se o seu site acontece a ser para não-ASCII parte do mundo (leia-se: em qualquer lugar fora dos EUA e Reino Unido). A mudança mais dolorosa em Django foi a mudança de bytestrings para unicode objetos internamente - agora você tem que encontrar todos os lugares onde você usar bytestrings e mudar isso para unicode. Pior caso é a prestação modelo, você nunca saberá que você se esqueceu de mudar uma variável até chegar UnicodeError.

Outra coisa notável:. manipuladores ( oldforms ) ter ido e você não tem outra maneira do que para reescrever todas as peças com formas ( newforms )

Se este for o seu caso e seu projeto é maior do que 2-3 apps, eu estaria um pouco relutante em atualizar até que realmente necessário.

Nós atualizamos em um processo em várias fases e estou muito feliz com isso. O aplicativo em questão foi sobre 100.000 LoC e executar várias funções de negócios centrais com o lote de interface com sistemas legados. Nós trabalhamos assim:

  1. Update para django unicode 0,97-post fundem. Corrigir todos os problemas unicode
  2. refatorar o aplicativo em aplicativos reutilizáveis, adicionar testes. Isso nos deixou com 40.000 LoC na aplicação principal / Projeto
  3. Atualização para django 0,97 post autoexcape mesclagem. Fix auto escapar nos aplicativos reutilizáveis ??criados no 3. Em seguida, corrigir os problemas de auto-escaping restantes na aplicação mian.
  4. Atualização para 1.0. O que restou foi principalmente a fixação do material de administração.

A coisa toda levou cerca de 6 meses onde nós onde executando um ramo de produção legado em nossos servidores, enquanto portar um outro ramo a 1,0. Enquanto isso nós também, onde a adição de recursos para o ramo de produção.

A fusão final foi muito menos confuso do que o esperado e levou cerca de uma semana para 4 codificadores que se fundem, rever, testar e corrigir. Em seguida, rolou para fora, e por cerca de uma semana foi mordido por insetos anteriormente inesperados.

Apesar de tudo, estou bastante satisfeito com o resultado. Temos uma muito melhor codebase agora para um maior desenvolvimento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top