3

ローカル設定と本番設定用に異なるファイルを使用して Django プロジェクトをセットアップしています。Django 秘密鍵が virtualenv の環境変数に正常に含まれていることを確認でき、runserver を実行してもエラーは発生しません。ただし、manage.py syncdb を試すと、

django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

runserver の後でサイトを正常に参照できるのに、データベースを同期できない理由がわかりません。env を実行すると、秘密鍵がそこにあり、基本設定ファイル (ローカル設定にインポート) にあることがわかります。これを行っています。

SECRET_KEY = os.environ.get('MY_SECRET_KEY')

これをデバッグする助けがあれば大歓迎です。

ユアン

4

2 に答える 2

1

syncdb が機能しないのに runserver コマンドが機能する理由はわかりませんが、SECRET_KEY に対して行ったのと同じ方法で DJANGO_SETTINGS_MODULE の環境変数を追加することで解決できます。唯一の違いは、django コード内のどこでも DJANGO_SETTINGS_MODULE を参照する必要がないことです。私はまさにその方法で自分のセットアップを実行していますが、私が遭遇する唯一の問題は、プロジェクトを切り替えるときに設定モジュールを変更するのを忘れることです:-)

編集: --settings=myapp.settings.local と を追加していることに気づきませんでしrunserversyncdb。これを行う必要があるのは、デフォルトとは異なるパスの設定を使用しているため、python がそれらを見つけられないためです。また、wsgi ファイルで DJANGO_SETTINGS_MODULE を設定しましたが、これは Web サーバー経由でサイトにアクセスした場合にのみ発生します。管理コマンドを実行すると、wsgi ファイルは無視される (AFAIK) ため、SECRET_KEY と同じ方法で DJANGO_SETTINGS_MODULE を環境変数に追加すると、管理コマンドで設定ファイルを使用できるようになります。

それが役立つことを願っています

于 2013-10-30T12:29:06.403 に答える