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
-
Crie um Projeto do tipo Pydev Django Project;
-
Ao clicar em Finish este erro irá aparecer, clique Ok e siga em frente:
-
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.
Configurações de depuração
-
No Eclipse, clique em Debug Configurations, na lista lateral crie uma nova configuração do tipo PyDev Django;
-
Indique em Projeto indique o projeto MainModule o script manage.py referente ao projeto;
-
Na Aba Arguments escreva em: Program Arguments: -> runserver --noreload Working Directory -> Selecione Other e escreva ${project_loc:};
-
Salve a configuração e utilize-a para depuração.
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.
Ivo,
ResponderExcluirmas 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!