2012-06-22 13 views
8

EDITAR Me equivoqué: se imprime dos veces, no cuatro veces.django - settings.py parece cargar varias veces?

pongo esto en mi settings.py

print 'ola!' 

y en el arranque "ola" se imprime dos veces ! Parece que algo está mal con mi proyecto pycharm django ... ¿Alguna idea de por qué esto sucedería? No está en un bucle ni nada (que yo sepa, de todos modos)

¡salud!

YAY El usuario conocido sólo como "Rohit", de acuerdo con las observaciones, se ha determinado que una solución se puede encontrar aquí: https://stackoverflow.com/a/2110584/1061426 ~ Ver el comentario acerca de cómo deshabilitar la recarga.

PRECAUCIÓN No tengo mi código Django arriba y ahora, así que no sé lo que hará la noload. Buena suerte, soldados.

+0

Encontré la respuesta aquí: http://stackoverflow.com/questions/2110545/why-is-init-module-in-django-project-loaded-twice#comment31434551_2110584 – rohit

Respuesta

1

Django hace algunas cosas extrañas con settings.py, y se ejecutará más de una vez. Estoy acostumbrado a verlo importado dos veces, no estoy seguro de por qué en PyCharm te dan cuatro veces. Debe tener cuidado con las declaraciones con efectos secundarios en settings.py.

+0

lo siento, me equivoqué - tienes razón, aparece dos veces – bharal

2

En realidad, lo que Django hace es poner un envoltorio alrededor de la configuración. Básicamente es un objeto (objeto de configuración si así lo desea) que le da acceso a algunos reguladores directos como settings.WHATEVER, por lo que parece que tiene acceso a las variables globales en settings.py direccional.

Realmente no recuerdo, por qué la importación ocurre dos veces. Lo investigué una vez cuando trabajé en django-dynamic-settings, que usa un enfoque muy similar al de Django. De todos modos, si está interesado en la "magia", puede seguir el flujo a partir de la llamada execute_from_command_line en manage.py.

1

Se ha formulado una pregunta estrechamente relacionada al menos twice since. Puedo agregar que un desarrollador de Django core rejected tiene la idea de que se trata de algún tipo de error de Django; es un comportamiento normal.

Ver también this de Graham Dumpleton.

Cuestiones relacionadas