2011-11-29 14 views
0

devserverを起動するときにいくつかのコードを実行する必要があります。Django:devserverの起動時にいくつかのコードを実行します。

現時点では、自分のアプリケーションの内側にmodels.pyというコードを挿入しています。

このソリューションには副作用があります。コードは他の管理コマンドが使用されているときに実行されるため、避けたいと思います。

更新日:これは配布可能なアプリケーションの一部です。私はユーザー(実際には開発者)に追加のコマンドを実行させたくありません。彼らはrunserverコマンドだけを使用できるはずです。私は自分の実装でrunserverコマンドを無効にしたくない。更新

from django.conf import settings 

if settings.DEBUG: # I actually use another setting here, but it does not matter 
    run_my_code_in_a_daemon_thread() 

私は、このファイル内の任意の実際のモデルを持っていない:models.pyは、このようになります。ですから、私のコードはDjangoがINSTALLED_APPSのすべてのアプリケーションをスキャンし、models.pyをインポートするときに一度だけ実行されます。

答えて

2

カスタムbash(python)ランチャーは問題ありません。または、自分でmanagement commandを書くこともできます。

+0

ニース管理コマンドについて知りませんでした。.. 。 – jro

+0

他のコマンドやスクリプトを使いたくないのですが、devserver起動時に自動的に実行するコードが必要です –

+0

@AndreyFedoseevコードは何とか起動する必要があるので、ランチャーを書く必要があります。 – DrTyrsa

1

ローカルmanage.pyを更新するだけですか?あなたはrunserverに興味を持っている(渡されるパラメータをチェックし、それがない場合は、そこから希望のコードを実行し、このような何か:。!

if __name__ == "__main__": 
    if sys.argv[1] == 'runserver': 
     # Your custom code 
    execute_manager(settings) 
+0

私にとってはうまくいきません。私はzc.buildoutとdjangorecipeを使用して、私のためにmanage.pyスクリプトを生成します。 Djangoのインスタンスを再構築すると、私の変更はすべて失われます。 –

+0

その場合、DrTyrsaの答えが適用されます。起動前に実行したいものを実行する(ブートローダのような)スクリプトを作成し、 'python manage.py runserver'を実行させます。 – jro

関連する問題