Comment surveiller automatiquement les fichiers .py, .js et autres fichiers de code source pour redémarrer une application Django (ou toute autre d'ailleurs) et actualiser le navigateur lorsque la source change? Ceci est possible dans = Rails using guard, dans les applications JS utilisant grunt-contrib-watch et le plugin de navigateur livereload qui l'accompagne. Comment puis-je le faire pour Python les applications Web telles que Django?)
Je démarre mon Django serveur avec
foreman start
voici mon Procfile:
web: newrelic-admin run-program gunicorn app.wsgi
comme suggéré par les documents Heroku/Newrelic ou l'habituel
python manage.py runserver
La méthode runserver
redémarre le serveur sur les changements de source .py, mais pas le navigateur et ne surveille pas les autres fichiers - je pourrais exécuter la garde à côté, mais j'ai deux processus à gérer, tandis que grunt ou rake offrent des interfaces unifiées. Je me demande quelle est la façon recommandée de le faire parmi les développeurs Python?
Je n'ai pu trouver aucune documentation détaillée et complète à ce sujet - seulement des discussions incomplètes ici et là .
Vous n'avez pas besoin d'une extension de navigateur pour effectuer des rafraîchissements automatiques. Jetez un œil à https://github.com/tjwalch/Django-livereload-server .
J'ai posté une réponse plus détaillée à ce sujet sur https://stackoverflow.com/a/36961244/2950621
Il fonctionne en utilisant une commande manage.py (serveur) pour surveiller vos fichiers .js et autres fichiers statiques. Le serveur envoie un signal au navigateur via des websockets. Il y a du code côté client injecté sur chaque page. Le code injecté répond au signal et rafraîchit le navigateur.
Installez cette application Django:
pip install Django-livesync
Sur votre Django ajoutez quelque chose comme:
INSTALLED_APPS = (
'...',
'livesync',
'Django.contrib.staticfiles',
'...',
)
MIDDLEWARE_CLASSES = (
'livesync.core.middleware.DjangoLiveSyncMiddleware',
)
Attention à enregistrer 'livesync' avant 'Django.contrib.staticfiles' si vous l'utilisez.
Maintenant, démarrez simplement votre serveur de développement:
python manage.py runserver
Vérifiez cela pour plus de détails: https://github.com/fabiogibson/Django-livesync
Frustré par tous les rafraîchissements explicites, j'ai créé une extension de navigateur, pour Firefox et Chrome, pour automatiser cela. L'extension fonctionne avec une application Django que vous ajoutez à votre liste d'applications dans INSTALLED_APPS. Vous pouvez en savoir plus sur le github repo .
Bien que le dépôt ait le code source entier, les extensions sont également disponibles dans la boutique en ligne respective. Recherchez simplement "Django Auto Refresh". Avec ceux-ci, il vous suffit de copier l'application dans le dossier de notre projet et de l'inclure via INSTALLED_APPS. Je voulais ajouter un script de configuration pip, mais je n'ai pas trouvé le temps de le faire.
HTH. Toutes mes excuses si cela ressemble à une auto-promotion.
En utilisant python manage.py runserver
est ce qui est le plus utilisé. Vous devrez utiliser un autre outil comme: http://livejs.com/ pour rafraîchir le navigateur lui-même puisque Django n'en est vraiment pas conscient.