質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1879閲覧

Python Djangoのsettings.py内に記述したSecret keyが認識されない

yutonozaki0603

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/09/12 13:59

編集2020/09/12 14:01

前提・実現したいこと

現在Python,Djangoを用いてWebアプリの開発を勉強しています。本番運用と開発環境を区別するためにsettings.pyを3つに分割して開発を進めたいです

発生している問題・エラーメッセージ

まずsettings.pyをsettings.py(本番用でまだ使用しないファイル),settings_common.py(本番運用と開発環境で共通する設定部分を書いたファイル),settings_dev.py(開発用の設定ファイル)の3つに分割しました。
Secret Keyは3のファイルに記述してあり、それを1と2に全てインポートしています。

しかし、settings_devを用いてrunserverやmakemigrationsなどをコマンドを入力するとThe Secret Key must not be emptyと認識されてしまい開発が進められない状態です

File "C:\Users\yuto1\Anaconda3\envs\MyDjango\lib\site-packages\django\conf\__init__.py", line 161, in __init__ raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.

該当のソースコード

Python"""

1@settings.common(開発環境と本番環境共通の設定ファイル) 2 3import os 4import logging 5from django.contrib.messages import constants as messages 6from accounts.models import CustomUser 7 8BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 9TEMPLATES_DIRS = os.path.join(BASE_DIR,"templates") 10ALLAUTH_DIR = os.path.join(BASE_DIR,"templates","allauth") 11 12SECRET_KEY = '*****' 13#実際にはsecret kyeが記述してあります 14 15INSTALLED_APPS = [ 16 "accounts.apps.AccountsConfig", 17 "blog.apps.BlogConfig", 18 'django.contrib.admin', 19 'django.contrib.auth', 20 'django.contrib.contenttypes', 21 'django.contrib.sessions', 22 'django.contrib.messages', 23 'django.contrib.staticfiles', 24] 25 26MIDDLEWARE = [ 27 'django.middleware.security.SecurityMiddleware', 28 'django.contrib.sessions.middleware.SessionMiddleware', 29 'django.middleware.common.CommonMiddleware', 30 'django.middleware.csrf.CsrfViewMiddleware', 31 'django.contrib.auth.middleware.AuthenticationMiddleware', 32 'django.contrib.messages.middleware.MessageMiddleware', 33 'django.middleware.clickjacking.XFrameOptionsMiddleware', 34] 35 36ROOT_URLCONF = 'book_study2.urls' 37 38TEMPLATES = [ 39 { 40 'BACKEND': 'django.template.backends.django.DjangoTemplates', 41 'DIRS': [TEMPLATES_DIRS,ALLAUTH_DIR], 42 'APP_DIRS': True, 43 'OPTIONS': { 44 'context_processors': [ 45 'django.template.context_processors.debug', 46 'django.template.context_processors.request', 47 'django.contrib.auth.context_processors.auth', 48 'django.contrib.messages.context_processors.messages', 49 ], 50 }, 51 }, 52] 53 54WSGI_APPLICATION = 'book_study2.wsgi.application' 55 56DATABASES = { 57 'default': { 58 'ENGINE': 'django.db.backends.postgresql_psycopg2', 59 #"NAME" must be a name of the datebase 60 'NAME': "blog", 61 "USER":os.environ.get("DB_USER"), 62 "PASSWORD":os.environ.get("DB_PASSWORD"), 63 "HOST":"", 64 "PORT":"" 65 } 66} 67 68AUTH_PASSWORD_VALIDATORS = [ 69 { 70 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 71 }, 72 { 73 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 74 }, 75 { 76 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 77 }, 78 { 79 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 80 }, 81] 82 83 84LANGUAGE_CODE = 'ja' 85 86TIME_ZONE = 'Asia/Tokyo' 87 88USE_I18N = True 89 90USE_L10N = True 91 92USE_TZ = True 93 94STATIC_URL = '/static/' 95STATICFILES_DIRS =[ 96 os.path.join(BASE_DIR,"static"), 97] 98 99MESSAGE_TAGS = { 100 messages.ERROR:"alert alert-danger", 101 messages.WARNING:"alert alert-warning", 102 messages.SUCCESS:"alert alert-success", 103 messages.INFO:"alert alert-info", 104} 105 106AUTH_USER_MODEL = "accounts.CustomUser" 107 108 109 110@settings_dev(開発環境) 111 112from .settings_common import * 113 114SECRET_KEY = '***' 115#実際にはsecret keyが記述してあります 116 117DEBUG = True 118 119ALLOWED_HOSTS = [] 120 121LOGGING={ 122 "version":1, 123 "disable_existing_loggers":False, 124 125 "loggers":{ 126 "django":{ 127 "handlers":["console"], 128 "level":"INFO", 129 }, 130 "blog":{ 131 "handlers":["console"], 132 "level":"DEBUG", 133 }, 134 }, 135 "handlers":{ 136 "console":{ 137 "level":"DEBUG", 138 "class":"logging.StreamHandler", 139 "formatter":"dev" 140 } 141 }, 142 "formatters":{ 143 "dev":{ 144 "format":"\t".join([ 145 "%(asctime)s", 146 "[%(levelname)s]", 147 "%(pathname)s(Line:%(lineno)d)", 148 "%(message)s" 149 ]) 150 }, 151 } 152} 153 154 155EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" 156 157 158@settings.py(本番環境) 159 160from .settings_common import * 161 162SECRET_KEY = '****' 163#本当はsecret keyが記述してあります 164

試したこと

settings_common.pyの全てをインポートすることでsecret keyの記述を避ける
各ファイルに直接secret keyを記述する

補足情報(FW/ツールのバージョンなど)

Python,django,postgresqlなどのツールは9/12日時点で最新バージョンのモノを使っています
また各ファイルに記述しているsecret keyは全く同じモノを記述しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問