Django の manage.py シェル コマンドにインポートをプリロードするにはどうすればよいですか?
-
11-09-2019 - |
質問
Django プロジェクトで manage.py シェルを実行して何かを確認するとき、シェルの開始時に常に実行したい共通のインポートがあります (例:常にモデル ファイルをインポートしたいと思っています。) シェル コマンドを実行するたびにモデル ファイルを自動的に実行するにはどうすればよいですか?
2番目の関連する質問、上矢印を押すと、manage.pyシェル(および通常のPythonシェル)で以前に実行したコマンドの代わりに「^A」文字が表示されます。前のコマンドをロードするには、これを修正するにはどうすればよいですか? Linux/Unixのコマンドラインのようなものでしょうか?
解決
最初の質問については、manage.py shell_plusコマンドを見てhref="http://github.com/django-extensions/django-extensions/tree/master/" rel="noreferrer"> django-プロジェクトを拡張。これは、シェルの起動時に、すべてのモデルファイルをロードします。このプロジェクトは、あまりにも他の有用なトリックの全体の負荷を持っているので、それは間違いなくチェックアウトする価値がある。
2番目の質問については、私はあなたがreadline
をインストールする必要があることだけを推測することができます。
他のヒント
あなたは何を複製することができます。
python manage.py shell
ちょうど実行しています:
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
あなたはすべてそのスクリプトの残りのために設定した環境を持つことになります。ここでも、これを行うために他のいくつかの方法があります: HTTP ://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/する
あなたの問題の両方を解決することができます一つ一つの事は ipython のです。 ipythonは、以前の実行を格納し、それは同様にあなたの完了を与えることができます。
頻繁に使用されるパッケージを自動インポートする python manage.py shell_plus
例:
# local_settings
SHELL_PLUS_PRE_IMPORTS = (
('<app_name>.models', '*'),
('<app_name>.forms', '*'),
('<app_name>.views', '*'),
('django.core.urlresolvers', '*'),
('django.db', 'connection'),
('django.db', 'reset_queries'),
)
SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>']
参照:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst
Djangoのシェルに余分なものを追加することの出発点としては、ジャンゴ・extesions のアプリ、あなたが「imported_objects」辞書を利用できるようにしたいものは何でも追加することで、それを修正ます。
例:あなたはshell_plus.pyファイルを複製し、最後に次の2行を追加する場合:
# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects) # <-- this is the original final line
新しいファイルを使用して、シェルを実行すると、「連想リスト」参照が利用できるようになります。 私はここに長い例を置く: http://www.michelepasin.org/techblog/?p= 1012 の