2013-09-30 16 views
9

Jak automatycznie monitorować .py, .js i inne pliki kodu źródłowego, aby ponownie uruchomić aplikację Django (lub dowolną inną) i odświeżyć przeglądarkę po zmianie źródła? Jest to możliwe w Railsach korzystających z guard, w aplikacjach JS przy użyciu grunt-contrib-watch i dołączonej wtyczki przeglądarki livereload. Jak mogę to zrobić dla aplikacji internetowych Python, takich jak Django?Jak automatycznie ponownie załadować Django po zmianie plików?

zacznę mój serwer Django z

foreman start 

to moja Procfile:

web: newrelic-admin run-program gunicorn app.wsgi 

jako sugerowane przez Heroku/Newrelic docs lub zwykły

python manage.py runserver 

Sposób runserver uruchamia ponownie serwer ze zmianami źródła .py, ale nie przeglądarką i nie ogląda ot jej pliki - mogłem biec obok niej, ale mam dwa procesy, którymi muszę się zająć, podczas gdy pomruk lub rake oferują ujednolicone interfejsy. Zastanawiam się, jaki jest zalecany sposób robienia tego wśród programistów Pythona?

Nie mogłem znaleźć szczegółowej, wyczerpującej dokumentacji na ten temat - tylko niekompletne dyskusje here i there.

+0

Do osiągnięcia parytetu z gunicorn/runserver przeładunku, należy użyć flagi --reload w Procfile. Niestety nie mam dobrej odpowiedzi na przeładowanie przeglądarki. –

Odpowiedz

9

Nie potrzebujesz rozszerzenia przeglądarki, aby wykonać automatyczne odświeżanie. Spójrz na https://github.com/tjwalch/django-livereload-server.

Zamieściłem szerszej odpowiedzi na ten temat w https://stackoverflow.com/a/36961244/2950621

Działa przy użyciu polecenia manage.py (serwerze), aby monitorować swoje .js i innych plików statycznych. Serwer wysyła sygnał do przeglądarki za pośrednictwem stron internetowych. Na każdej stronie jest wstrzyknięty kod po stronie klienta. Wstrzyknięty kod odpowiada na sygnał i odświeża przeglądarkę.

3

Najbardziej przydatne jest używanie python manage.py runserver. Będziesz musiał użyć innego narzędzia, takiego jak: http://livejs.com/, aby odświeżyć samą przeglądarkę, ponieważ Django naprawdę nie jest tego świadomy.

2

Sfrustrowany ze wszystkimi wyraźnymi odświeżeniami, utworzyłem rozszerzenie przeglądarki, zarówno dla Firefoxa, jak i Chrome, aby zautomatyzować to. Rozszerzenie działa z aplikacją Django, którą dodajesz do listy aplikacji w INSTALLED_APPS. Możesz dowiedzieć się więcej na stronie github repo.

Chociaż repozytorium ma cały kod źródłowy, rozszerzenia są również dostępne w odpowiednim sklepie internetowym. Po prostu wyszukaj "Django Auto Refresh". W tym celu wystarczy skopiować aplikację do folderu naszego projektu i dołączyć ją za pomocą INSTALLED_APPS. Chciałem dodać skrypt instalacyjny pip, ale nie znalazłem czasu, aby to zrobić.

HTH. Przepraszam, jeśli to brzmi jak autopromocja.

1

zainstalować tę aplikację django:

pip install django-livesync 

ustawień django plików dodatek coś takiego:

INSTALLED_APPS = (
    '...', 
    'livesync', 
    'django.contrib.staticfiles', 
    '...', 
) 

MIDDLEWARE_CLASSES = (
    'livesync.core.middleware.DjangoLiveSyncMiddleware', 
) 

Strzeż się zarejestrować 'LiveSync' przed 'django.contrib.staticfiles' jeśli jesteś Użyj tego.

Teraz wystarczy uruchomić serwer rozwój:

python manage.py runserver 

to sprawdzić więcej szczegółów: https://github.com/fabiogibson/django-livesync

Powiązane problemy