私はsetup_environ()
を使って、カスタムmanage.pyコマンド(私の好みの選択)として全くうまく収まらなかったコマンドラインから実行される、一度限りのpythonスクリプトを書きました。それはうまくすべてをセットアップします。私はこの機能を非難したと思います。非django pythonistasはこれのような魔法のようなもののためにdjangonautsを楽しませるので、私たちは汚い気分に疲れました。だから、それが非難された場合、代替手段は何ですか?たぶんこれは怠惰な質問ですが、setup_environの代わりに同じ効果を達成するには何が必要ですか?私は私のスクリプトに関数をコピー/ペーストすることができたと思いますが、私はそれを非難するという点ではないと仮定しています。 (明らかに私はまだ廃止予定の関数を使うことができますが、私のスクリプトはいくつかのバージョンのdjangoで生き残ることができます)一時的なdjangoスクリプトのために非推奨のsetup_environ()の代わりに?
答えて
これはちょうど私の2セントを追加Django 1.7
import os
import django
from myapp import models
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
print models.MyModel.objects.get(pk=1)
Django 1.4リリースノートdjango.conf.settings.configure()
を使用して設定をお勧めします。これは、あなたが "ピジョンソニック(Pythonic)"のやり方ですべてを行う必要がある小さなスクリプトにとってはいいです。しかし、より大きなプロジェクトを持っているなら、別の設定モジュール/パッケージを持っているDjangoのアプローチを使い、そのパスを環境変数DJANGO_SETTINGS_MODULE
に入れます。これはmanage.py
に使用されたアプローチである。
# manage.py
# ...
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
# ...
リリースのドキュメントはhereを見つけることができます。
'manage.py'は' os.environ.setdefault( "DJANGO_SETTINGS_MODULE"、 "myproject.settings") 'という行を持っていますが、まだシェルを起動しようとすると、元の質問と同じエラーです。 –
あなたは
from django.core.management import setup_environ
import fooproject.settings as settings
setup_environ(settings)
を持っていた前にちょうど
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
from django.conf import settings
と交換し、設定が設定として読み込まれます場合は、miki725の答えに展開します。
Django 1.7+については、Ben Davisのソリューションを参照してください。
これはdjango 1.6で私にとってはうまくいきません - sys.pathにプロジェクトパス(アプリケーションではない)を追加しました。DJANGO_SETTINGS_MODULEに設定モデルを追加してからdjango.confから設定をインポートしましたが、私のデータベースモデル(shoppinglist.models import ShoppingListから)をインポートすると、 "No models named models"というエラーが表示されます。同じimport行は、manage.pyで起動されたシェル内で動作します。何か案は? – frankster
モデルをインポートできない場合は、パス値が正しく設定されていないように見えますが、設定に関するこの質問の範囲外です。パスをデバッグするには、 "manage.py shell"で起動したdjangoシェルではなく、 "python"で起動した通常のpythonシェルでテストしてみるべきです。 –
Disclaimer: I'm using Django 1.8
に変更されました:私は、このページで提示ソリューションのいくつかを試してみたが、それらはすべてで働いていたdid't。私はちょうど私が以下に共有している解決策を思いついた。
プロジェクトのルートフォルダにいることを確認してください。 manage.py
と同じです。レアンドロNは(、レアンドロをありがとう!)、あなたは(django.setup追加する必要が言ったことに追加するには
#make sure basic imports are in place
>>> import os,django
#set the specific django settings file
>>> os.environ.setdefault("DJANGO_SETTINGS_MODULE", "main.settings.base")
# import your modules and use them just like you do in your
# web apps
>>> from apps.customers import models as c
# normal usage... for instance:
>>> dir(c)
['You', 'Will', 'See', 'Your', 'Models', ... ]
私がルートにいない場合はどうすればよいですか? – Alexis
)。例えば
、私のコード:FYI
import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
from app.models import ModelA, ModelB
、私は、Djangoの1.10上です。
- 1. Android用の非推奨のGoogleウェブ検索APIの代わりに
- 2. API変数リゾルバは、JSF 1.1の後に非推奨になりました。代わりにel-resolverを使用
- 3. layerkit/layerYの代わりに、Webkitでは非推奨となっているものを使用しますか?
- 4. RSpecの非推奨
- 5. 効率的なWebクローラーのための言語の推奨
- 6. djangoの代わりにphpmyadmin
- 7. glEnableClientState非推奨
- 8. 非推奨コード
- 9. UIKeyboardBoundsUserInfoKey非推奨
- 10. iPhoneのNSXMLDocumentの代わりにXSLTの目的のために
- 11. 誰でもWindows Workflowの代わりに.Netオープンソースを推奨できますか?
- 12. 一時的な使用のためのdjangoモデルのインスタンス変数
- 13. 非同期CTP - タスクスケジューリングのための推奨アプローチ
- 14. mapView非推奨のメソッドgetZoomControls?
- 15. タイプHTable(config、tablename)は非推奨です。代わりに何を使うのですか?
- 16. タイプ 'SEL'から 'SEL'へのキャストは非推奨です。代わりにsel_getNameを使用してください
- 17. のXcodeの時間プロファイラは、アドレスの代わりに、一般的にはシンボル
- 18. MPProcessorsはMac OS 10.7では非推奨です。代わりに何がありますか?
- 19. PHP ereg_replace非推奨
- 20. Parse.com UIRemoteNotificationType非推奨
- 21. Django 1.4で非推奨フィールドをマークするには?
- 22. ファイルは、代わりに、一般的なファイルハンドルをPerlの
- 23. 効率的な追加のためにJuliaで推奨されるデータ構造
- 24. C#データベースアクセスのための推奨事項
- 25. linux hostingのための推奨事項
- 26. 開発のための推奨アンドロイド版?
- 27. マインド推奨のためのメモリ内データベース
- 28. Pythonクロスプラットフォームリスナーサーバのための推奨事項
- 29. バージョン4.5以降、get_currentuserinfoは非推奨です!代わりにwp_get_current_user()を使用してください
- 30. Django Rest Framework一括更新更新の代わりに挿入
1.7.3でdjango.setup()が動作しない AttributeError: 'module'オブジェクトに 'setup'属性がありません – Harry
正しくインポートしていることを確認してください(パスが正しいことを確認してください) 。 1.7.3にsetup関数があります。https://github.com/django/django/blob/1.7.3/django/__init__.py –
django.setup()は1.8 djangoバージョンで追加されました。それは1.7で動作しません。 https://docs.djangoproject.com/en/1.8/topics/settings/ – javed