segunda-feira, março 26, 2012

Django 1.4 and Pydev



Neste sábado o Django foi atualizado para a versão 1.4 e na mesma hora decidi atualizar os projetos que atualmente desenvolvo devido às boas novidades da versão. Estas podem ser completamente visualizadas em Release notes.

A atualização da versão recomenda que o script "manage.py" seja atualizado, conforme esta  recomendação. Após alterar o script o Pydev, infelizmente, deixa de funcionar pois,
o Pydev sobrescreve a variável DJANGO_SETTINGS_MODULE de acordo com o diretório do script manage.py. Mesmo alterando as configurações do projeto o problema não é resolvido então
 para resolver este problema proponho a utilização deste script no lugar do manage.py padrão.

#!/usr/bin/env python
import os
import sys


if __name__ == "__main__":

    settings_module = "{{ project_name }}.settings"
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module)
    # Principal Mudanca.
    os.environ["DJANGO_SETTINGS_MODULE"] = settings_module

    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)


Após alterar o script é necessário realizar os seguintes passos para que a depuração
funcione corretamente:


Caso queria criar um projeto novo, siga as instruções abaixo:

Para Criar um Projeto Novo

  1. Crie um Projeto do tipo Pydev Django Project;



     

  2.  Ao clicar em Finish este erro irá aparecer, clique Ok e siga em frente:


  3. Veja que o projeto foi criado com sucesso, este erro aparece pois o layout padrão do projeto foi modificado, então basta ignorá-lo.


Pronto, seu projeto está criado.


Configurações de depuração


  1. No Eclipse, clique em Debug Configurations, na lista lateral crie uma nova configuração do tipo PyDev Django;


  2. Indique em Projeto indique o projeto MainModule o script manage.py referente ao projeto;


  3. Na Aba Arguments escreva em: Program Arguments: -> runserver --noreload Working Directory -> Selecione Other e escreva ${project_loc:};


  4. Salve a configuração e utilize-a para depuração.

     
      
Bom só precisa ser feito isso para tudo funcionar, ou voltar a funcionar como antes.

Ao inciar a depuração é comum este erro aparecer Para solucioná-lo basta clicar sobre o nome do projeto que deseja debugar.




Espero ter facilitado a vida de alguém.

Um comentário:

  1. Ivo,
    mas e com o django 1.3 utilizava este código no manage.py: http://djangosnippets.org/snippets/1561/

    sem o --noreload, aí cada vez que alterava o código fazia o reload automático... é possível com o django 1.4?

    valeu!

    ResponderExcluir