web-dev-qa-db-ja.com

ファイルが変更されたときにDjangoを自動的にリロードする方法は?

.py、.js、およびその他のソースコードファイルを自動的に監視してDjango(またはそのほかのことなら)アプリケーション)を再起動し、ソースが変更されたときにブラウザを更新する方法?これは= Railsガードを使用して、JSアプリでgrunt-contrib-watchと付随するlivereloadブラウザープラグインを使用します。Python DjangoなどのWebアプリではどうすればよいですか?

Djangoサーバーを

foreman start

これは私のProcfileです:

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

heroku/Newrelicのドキュメントまたは通常の提案

python manage.py runserver

runserverメソッドは、.pyソースの変更時にサーバーを再起動しますが、ブラウザーは再起動せず、他のファイルを監視しません-私はそれと一緒にガードを実行できますが、次に、注意する必要がある2つのプロセスがあります。一方、うなり声や熊手は統一されたインターフェースを提供します。 Python開発者の間でこれを行うための推奨される方法は何ですか?

これに関する詳細で包括的なドキュメントは見つかりませんでした-不完全な議論 here および there のみ。

16
metakermit

自動更新を実行するためにブラウザ拡張機能は必要ありません。 https://github.com/tjwalch/Django-livereload-server をご覧ください。

私はこれについてより広範な回答を https://stackoverflow.com/a/36961244/2950621 に投稿しました

これは、manage.pyコマンド(サーバー)を使用して.jsおよびその他の静的ファイルを監視することで機能します。サーバーはWebSocketを介してブラウザに信号を送信します。すべてのページにいくつかのクライアント側コードが挿入されています。挿入されたコードは信号に応答し、ブラウザを更新します。

21
nmgeek

これをインストールDjangoアプリ:

pip install Django-livesync

Django設定ファイルに次のようなものを追加します:

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

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

「livesync」を使用する場合は、「Django.contrib.staticfiles」の前に「livesync」を登録してください。

次に、開発サーバーを起動します。

python manage.py runserver

詳細はこちらをご覧ください: https://github.com/fabiogibson/Django-livesync

6
Fábio Gibson

すべての明示的な更新に不満を感じている私は、これを自動化するために、FirefoxとChromeの両方のブラウザー拡張機能を作成しました。この拡張機能は、DjangoアプリをINSTALLED_APPSのアプリリストに追加することで機能します。詳細は github repo で確認できます。

リポジトリには完全なソースコードがありますが、拡張機能はそれぞれのWebストアでも入手できます。 「Django Auto Refresh」を検索してください。これらを使用して、アプリをプロジェクトのフォルダーにコピーし、INSTALLED_APPSを介してそれを含めるだけです。ピップセットアップスクリプトを追加したかったのですが、それを実行する時間を見つけられませんでした。

HTH。これは自己宣伝のように聞こえますか。

3
Hari Mahadevan

python manage.py runserverの使用が最もよく使用されます。 Djangoは実際には認識していないため、ブラウザ自体を更新するには http://livejs.com/ のような別のツールを使用する必要があります。

3
stormlifter