47

setup_environ()はしばらく前にコマンド ラインから実行する 1 回限りの Python スクリプトを作成しましたが、これはカスタムの manage.py コマンド (私の好みの選択) としてはまったく適切ではありませんでした。それはすべてをうまく設定しました。この関数を非推奨にしたのは、django 以外の pythonistas がこのような魔法のようなもので djangonauts をからかって、汚れていると感じるのにうんざりしたためだと思います。非推奨の場合、代替手段は何ですか? たぶんこれは怠惰な質問ですが、同じ効果を得るために setup_environ の代わりに何を実行する必要がありますか? 関数をコピーしてスクリプトに貼り付けることができると思いますが、それが非推奨のポイントではなかったと思います。(明らかに、非推奨の関数を引き続き使用できますが、スクリプトをいくつかのバージョンの django で存続させたいと考えています)

4

6 に答える 6

28

miki725の答えを拡張するには、以前に持っていた場合

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

設定が設定として読み込まれます。

Django 1.7 以降については、Ben Davis のソリューションを参照してください。

于 2014-01-15T22:45:02.950 に答える
21

Django 1.4 のリリース ノートdjango.conf.settings.configure()では、設定を行うために使用することを公式に推奨しています。これは、すべてを「Pythonic」な方法で行う必要がある小さなスクリプトに適しています。DJANGO_SETTINGS_MODULEただし、より大きなプロジェクトがある場合は、個別の設定モジュール/パッケージとそのパスを環境変数に持つ Django アプローチを使用するのが好きです。これは で使用されるアプローチですmanage.py:

# manage.py

# ...
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "fooproject.settings")
# ...

リリース ドキュメントはここにあります。

于 2013-02-24T05:53:20.793 に答える
1

免責事項:私はDjango 1.8を使用しています

2セントを追加するだけです。このページに記載されているソリューションのいくつかを試しましたが、まったく機能しませんでした. 以下で共有している解決策を思いついたところです。

プロジェクトのルート フォルダーにいることを確認します。同じ場所にmanage.pyあります。

#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', ... ]
于 2016-02-25T20:34:31.033 に答える