2012-02-07 19 views
5

Después de cambiar de nuevo la función de vista sin runserver y presionar F5 para actualizar la página, Django no volverá a cargar la nueva vista, sino que usará la anterior. pero si cambia la plantilla, Django siempre usa la nueva.¿Es posible volver a cargar la vista sin reiniciar Django?

Entonces, ¿hay alguna manera de hacer que Django vuelva a cargar la vista cada vez que el usuario actualice la página, creo que es muy conveniente para el desarrollo modificar la función de vista con frecuencia.

+0

Con el servidor de desarrollo, el código Python generalmente cambia reiniciar el servidor automáticamente. Con una plantilla, siempre es solo leer el archivo, así que esa es una historia diferente. –

+0

No estoy seguro de entender su pregunta. ¿Estás ejecutando tu sitio Django sin runserver? ¿Esto significa que lo estás ejecutando a través de otro método? Runserver debería recoger los cambios en cualquier archivo de Python que use el proyecto, aunque llevará unos segundos. –

+0

Lo ejecuto a través de pydev, no vuelve a cargar el código de cambio. así que cada vez que cambié la función de vista, tengo que ejecutar el servidor de nuevo para volver a cargar el código modificado. eso hace que la programación sea lenta. – storm

Respuesta

9

Si está ejecutando django utilizando el servidor de desarrollo (./manage.py runserver), entonces siempre se volverá a cargar cuando detecte cambios de código. Esto es incluso más eficiente que volver a cargar con cada solicitud. Si realiza un cambio, se recarga cuando lo necesita.

Si está ejecutando un servidor de producción (nginx, apache, etc.) y desea volver a cargar el código, entonces necesita agregar algo a su módulo wsgi para detectar cambios en el código.

Código recarga con Apache: http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

Código recarga con uwsgi: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

+0

Uso eclipse + pydev para desarrollar. Y simplemente uso eclipse para runserver, y encontré que no volvió a cargar la función de vista, pero recargué el archivo de plantilla, por lo que cada vez que cambio el código, tengo que reiniciarlo. ¿hay algún ajuste en el setting.py para habilitarlo? – storm

+1

Es un problema con PyDev. Por lo que sé, no hay una manera de hacerlo hacer la recarga (esto puede haber cambiado desde la última vez que lo usé), siempre terminé ejecutando runserver a través del terminal en su lugar. –

+1

Sí, independientemente del IDE que use, siempre ejecuto el servidor de ejecución en una terminal. – jdi

2

Es un problema conocido con PyDev. Sugeriría ejecutar el servidor desde terminal/cmd. cd a su directorio de proyecto en el que está presente manage.py y ejecutar el servidor utilizando

python manage.py runserver

No es necesario para ejecutar el proyecto desde el menú eclipse. Cualquier cambio realizado en eclipse se reflejará tan pronto como se realicen.

0

Me di cuenta de que es una configuración en las configuraciones de ejecución de pyDev. Me pregunto por qué, pero parece que --noreload está configurado por defecto. Así que edito los argumentos de la configuración de ejecución y ahora el servidor también se recarga cuando edito las vistas.

+0

--noreload se coloca de forma predeterminada ya que la forma en que implementa la recarga puede causar problemas con los puntos de corte y la depuración – dalore

2

Si está ejecutando Django como una aplicación WSGI en modo daemon, solo tiene que tocar el wsgi.py para su sitio y volverá a cargar la aplicación la próxima vez que haya una solicitud. (Así que no hay necesidad de ninguna opción especial).

+0

Esto puede no haber respondido la pregunta original pero respondió ¡mi pregunta! – teewuane

+0

Gracias +1, toque wsgi.py ayuda mucho. –

0

Trate de usar gunicorn o nginx como el funcionamiento del servidor ... Ellos no reinicie el cambio de código intente escribir

gunicorn --bind 0.0.0.0:8080 app.wsgi:application

Cuestiones relacionadas