2012-02-07 49 views
5

runserverを使わずにview関数を再度変更し、F5キーを押してページを更新すると、Djangoは新しいビューをリロードせず、前のものを使用します。テンプレートを変更すると、Djangoは常に新しいテンプレートを使用します。Djangoを再起動せずにビューを再読み込みすることはできますか?

だから、ユーザーがページを更新するたびにDjangoがビューを再読み込みするようにする方法がありますか?これは、ビュー機能を頻繁に変更する開発には非常に便利だと思います。

+0

を入力 試みを再起動していけない、Pythonのコードの変更は、一般的に、自動的にサーバーを再起動します。テンプレートを使用すると、ファイルを読み込むだけで別の話になります。 –

+0

私はあなたの質問を理解するか分からない。実行サーバーなしでDjangoサイトを実行していますか?これは別の方法で実行していることを意味しますか? Runserverは、プロジェクトで使用されているすべてのPythonファイルの変更を取得する必要がありますが、それは数秒かかるでしょう。 –

+0

pydevで実行しても、変更コードは再ロードされません。だから私は、ビューの機能を変更するたびに、私は変更されたコードをリロードするために再度runserverする必要があります。ゆっくりとプログラミングが行われます。 – storm

答えて

9

devサーバ(./manage.py runserver)を使用してdjangoを実行している場合、コード変更が検出されると常に読み込まれます。これは、すべてのリクエストでリロードするよりも効率的です。変更を加えると、必要なときにリロードされます。

プロダクションサーバー(nginx、apacheなど)を実行していてコードリロードが必要な場合は、コード変更を検出するためにwsgiモジュールに何かを追加する必要があります。 Apacheでリロード

コード:uwsgiでリロードhttp://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

コード:http://projects.unbit.it/uwsgi/wiki/TipsAndTricks

+0

私はeclipse + pydevを使ってdevelop.andを使ってeclipseをrunserverとして使っていますが、ビュー関数をリロードしていないことがわかりましたが、テンプレートファイルをリロードしています。それを有効にするための設定はsettings.pyにありますか? – storm

+1

これはPyDevの問題です。私が知っている限り、再ロードを行う方法はありません(これは最後に使用してから変更されている可能性があります)、私はいつもrunserverをターミナル経由で実行してしまいました。 –

+1

私はどんなIDEを使用しているかにかかわらず、私は常にターミナルでrunserverを実行します。 – jdi

2

それはPyDevは既知の問題です。ターミナル/ cmdからサーバーを実行することをお勧めします。 manage.pyが存在し、

python manage.py runserver

を使用してサーバを実行しますが、日食のメニューからプロジェクトを実行する必要はありませんプロジェクトディレクトリに CD。 eclipseで行われた変更は、作成されるとすぐに反映されます。

0

pyDev実行構成の設定であることがわかりました。私はなぜだろうかと思うが、デフォルトでは--noreloadが設定されているようだ。そこで、実行設定の引数を編集して、ビューを編集するときにもサーバーをリロードします。

+0

- リロードを実装する方法によってブレークポイントやデバッグに問題が発生する可能性があるので、デフォルトでnoreloadが適用されます – dalore

2

デーモンモードでWSGIアプリケーションとしてDjangoを実行している場合は、サイトのwsgi.pyに触れるだけで、次に要求があったときにアプリケーションがリロードされます。 (特別なオプションは必要ありません)。

+0

これは元の質問には答えていません私の質問! – teewuane

+0

ありがとう+1、touch wsgi.pyが大いに役立ちます。 –

0

は、サーバを実行しているようgunicornやnginxのを使用してみてください...彼らは、コード変更に開発サーバーで

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

関連する問題