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

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

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

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

Python

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

Q&A

2回答

333閲覧

Djangoでサーバー起動出来ません!

ttz100

総合スコア13

Django

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

Python

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

0グッド

0クリップ

投稿2019/04/05 12:31

編集2022/01/12 10:55

【前提・実現したいこと】

正常にrunserverしてコンテンツを表示させたい!
DJANGO_SETTINGS_MODULE の設定がうまくいっていないところまではなんとなくわかるのですが、
その対策としくみがよくわからないので教えてください。
settings.pyを削除したままの状態で、どのように正常にrunserverしてコンテンツを表示させるのかを教えて頂きたいです。


【質問の内容】

とあるDjangoの講座ではじめてレクチャーを受けて、Python(Django)で簡単なブログアプリを作っています。

訳あって、settings.pyの内容の一部を dev.py、common.py、prod.py、heroku.py に切り取り分割後に、
settings.pyを削除したのですが、そのままrunserverすると、以下の様なエラーメッセージが発生しました。

※講師によると、settings.pyの内容の一部を切り取り分割する理由は、
本番環境と開発環境を切り分けるために、dev.pyや、common.pyや、prod.pyなどに分ける為とのことでした。
私もこの部分に関しては、講師の言われるがままに作業しているので、よくわかりません。


【注意点!】

  • ローカル開発環境は、MacやLinuxではなく、Windows10を使用しています。
  • settings.pyを削除前は、正常に表示されておりましたが、

 settings.pyを削除後におかしくなりました。(当たり前っちゃ当たり前ですが)

  • あくまでも、本質問の主旨としては、講義のレクチャーに沿った形で、settings.pyを削除したままの状態で、

 どのように正常にrunserverしてコンテンツを表示させるのかを教えて頂きたいということです。

  • 講師の方にも何度も質問しているのですが、講師の方は、根本的にMac環境を推奨しているので、

 最終的には、私の環境では、対策には至りませんでした。


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

【発生している問題】

エラーが発生してサーバーが起動出来ません。

【エラーメッセージ】 (microblog) C:\Users\%username%\!Udemy\djangomaster\microblog\microblog>python manage.py runserver ModuleNotFoundError: No module named 'microblog.settings' During handling of the above exception, another exception occurred: Traceback (most recent call last): ModuleNotFoundError: No module named 'microblog.settings' (microblog) C:\Users\%username%\!Udemy\djangomaster\microblog\microblog>

【環境フォルダ構成】

<< プロジェクトフォルダ >> ├─Include ├─Lib (( 一部省略 )) ├─microblog │ ├─assets │ │ ├─css │ │ ├─img │ │ ├─js │ │ └─vendor │ │ ├─bootstrap │ │ │ ├─css │ │ │ ├─fonts │ │ │ └─js │ │ ├─font-awesome │ │ │ ├─css │ │ │ ├─fonts │ │ │ ├─less │ │ │ └─scss │ │ └─jquery │ ├─blog │ │ ├─migrations │ │ │ └─__pycache__ │ │ ├─templates │ │ │ └─blog │ │ └─__pycache__ │ └─microblog │ └─__pycache__ ├─Scripts │ └─__pycache__ └─settings ←ココに注目!
【うまくいっていたときのsettingsフォルダ内のファイル構成】 └─settings settings.py urls.py wsgi.py settings.py ←ココに注目!(要はsettings.pyの有無の差) __init__.py
【うまくいっていないときのsettingsフォルダ内のファイル構成】 └─settings settings.py urls.py wsgi.py __init__.py

該当のソースコード

【消される前の元のsettings.pyの内容 (設定内容が一つにまとまったもの)】

Python

1 2【settings.pyの中身】 3 4

【切り取り分割した ファイル(common.py、dev.py、prod.py、heroku.py)】

Python

1【common.pyの中身】 2 3""" 4Django settings for microblog project. 5 6Generated by 'django-admin startproject' using Django 2.1.7. 7 8For more information on this file, see 9https://docs.djangoproject.com/en/2.1/topics/settings/ 10 11For the full list of settings and their values, see 12https://docs.djangoproject.com/en/2.1/ref/settings/ 13""" 14 15import os 16 17# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 18BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 19# プロジェクトのフォルダを表示する 20print(BASE_DIR) 21 22# Quick-start development settings - unsuitable for production 23# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ 24 25# SECURITY WARNING: keep the secret key used in production secret! 26SECRET_KEY = 't$f44!o+qy_o3q*+v7zl(^*xzg9n19ezkxziikypfhdnap61%q' 27 28# Application definition 29 30INSTALLED_APPS = [ 31 'django.contrib.admin', 32 'django.contrib.auth', 33 'django.contrib.contenttypes', 34 'django.contrib.sessions', 35 'django.contrib.messages', 36 'django.contrib.staticfiles', 37 38 'blog', 39] 40 41MIDDLEWARE = [ 42 'django.middleware.security.SecurityMiddleware', 43 'django.contrib.sessions.middleware.SessionMiddleware', 44 'django.middleware.common.CommonMiddleware', 45 'django.middleware.csrf.CsrfViewMiddleware', 46 'django.contrib.auth.middleware.AuthenticationMiddleware', 47 'django.contrib.messages.middleware.MessageMiddleware', 48 'django.middleware.clickjacking.XFrameOptionsMiddleware', 49] 50 51ROOT_URLCONF = 'microblog.urls' 52 53TEMPLATES = [ 54 { 55 'BACKEND': 'django.template.backends.django.DjangoTemplates', 56 'DIRS': [], 57 'APP_DIRS': True, # False -> True 58 'OPTIONS': { 59 'context_processors': [ 60 'django.template.context_processors.debug', 61 'django.template.context_processors.request', 62 'django.contrib.auth.context_processors.auth', 63 'django.contrib.messages.context_processors.messages', 64 ], 65 }, 66 }, 67] 68 69WSGI_APPLICATION = 'microblog.wsgi.application' 70 71 72 73 74 75# Password validation 76# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators 77 78AUTH_PASSWORD_VALIDATORS = [ 79 { 80 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 81 }, 82 { 83 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 84 }, 85 { 86 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 87 }, 88 { 89 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 90 }, 91] 92 93 94# Internationalization 95# https://docs.djangoproject.com/en/2.1/topics/i18n/ 96 97LANGUAGE_CODE = 'ja' 98 99TIME_ZONE = 'UTC' 100 101USE_I18N = True 102 103USE_L10N = True 104 105USE_TZ = True 106 107 108# Static files (CSS, JavaScript, Images) 109# https://docs.djangoproject.com/en/2.1/howto/static-files/ 110 111STATIC_URL = '/static/' 112STATICFILES_DIRS = ( 113 # mac / : windows \ 114 os.path.normpath(os.path.join(BASE_DIR, "assets")), 115) 116 117LOGIN_REDIRECT_URL = '/' 118

Python

1【dev.pyの中身】 2 3from .common import * 4 5# SECURITY WARNING: don't run with debug turned on in production! 6DEBUG = True 7 8# Database 9# https://docs.djangoproject.com/en/2.1/ref/settings/#databases 10 11DATABASES = { 12 'default': { 13 'ENGINE': 'django.db.backends.sqlite3', 14 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 15 } 16} 17 18

Python

1【prod.pyの中身】 2 3from .common import * 4 5# SECURITY WARNING: don't run with debug turned on in production! 6DEBUG = False 7 8ALLOWED_HOSTS = ['*', ] 9 10# Database 11# https://docs.djangoproject.com/en/2.1/ref/settings/#databases 12 13DATABASES = { 14 'default': { 15 } 16} 17 18INSTALLED_APPS += ( 19 'gunicorn', 20) 21

Python

1【heroku.pyの中身】 2 3from .common import * 4 5# SECURITY WARNING: don't run with debug turned on in production! 6DEBUG = False 7 8ALLOWED_HOSTS = [] 9 10# Database 11# https://docs.djangoproject.com/en/2.1/ref/settings/#databases 12 13DATABASES = { 14 'default': { 15 } 16} 17

※settingsフォルダ内の init.py は、ファイルの中身は空です。


試したこと

問題切り分けの為に、settings.pyを切り取り分割する前に、事前にバックアップをとっておき、
その環境から、runserverしてみたところ、正常にrunserver出来ました!(コンテンツも正常に表示されております!)
それ故、settings.pyを切り取り分割したことが、直接的な問題であるといえます。

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

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

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

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

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

guest

回答2

0

後日、自分でコースの完成版をGitからダウンロードして確認したところ、
結果的に、Windowsでは進行不可能なコースということでした。
ありがとうございました。

投稿2019/04/08 10:42

ttz100

総合スコア13

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

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

0

https://leben.mobi/blog/python_django_settings/python/

似てるから同じネタですかねえ。settings.pyでググって一ページ目に出ました。

投稿2019/04/05 13:45

hayataka2049

総合スコア30933

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

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

hayataka2049

2019/04/05 13:56 編集

そして思う。そもそもsettingsディレクトリ掘ったなら、__init__.pyでimport対象変えてあげればそれで済むじゃん。 from .common import * from .dev import * # from .prod import * とか。 というかsettings.pyがsettingsディレクトリのなかにあるのが変な気がする
ttz100

2019/04/05 15:17 編集

>似てるから同じネタですかねえ。settings.pyでググって一ページ目に出ました。 違いますね。これではないです。 ただ、似てますねw これ。 ここから抜粋されたものかはわかりませんが・・・ ぶっちゃけてしまうと、某ユーデミーの講座です。 >というかsettings.pyがsettingsディレクトリのなかにあるのが変な気がする なぜそうなのか?なぜそうするのか? 初心者としては、それを判断する材料がなく、 最初は、そういうものなんだと言われるがまま進めてました。 そう言えば、やたら同じフォルダ名前の同じファイル名が多かった気がします。 (例えば、フォルダ構成が microblog > microblog > microblog とか、 指摘されたように settings.py が settings フォルダの中にあるとか) 構成が分かりづらいため、どこがおかしいのかわからず、 途中で手が止まってしまったり、何度も最初からやり直したり、 教材として、ややこしくわかりづらかった印象があります。 また、仰るように__init__.pyでimport対象変えてみたところ以下のエラーが出ました。 python: can't open file 'manage.py': [Errno 2] No such file or directory
ttz100

2019/04/05 15:24 編集

それと、削除される前の元の一つにまとまっていたsettings.pyの中身を 文字数?の制限の為かシステム的に書き込めなかったので、こちらに書き込みます。 ※以下の内容を部分的にコピペ切り取りしたものが、common.pydev.pyprod.py、heroku.pyです。 ____________________________________________________________ """ Django settings for microblog project. Generated by 'django-admin startproject' using Django 2.1.7. For more information on this file, see https://docs.djangoproject.com/en/2.1/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/2.1/ref/settings/ """ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # プロジェクトのフォルダを表示する print(BASE_DIR) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 't$f44!o+qy_o3q*+v7zl(^*xzg9n19ezkxziikypfhdnap61%q' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'microblog.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, # False -> True 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'microblog.wsgi.application' # Database # https://docs.djangoproject.com/en/2.1/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } # Password validation # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] # Internationalization # https://docs.djangoproject.com/en/2.1/topics/i18n/ LANGUAGE_CODE = 'ja' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.1/howto/static-files/ STATIC_URL = '/static/' STATICFILES_DIRS = ( # mac / : windows \ os.path.normpath(os.path.join(BASE_DIR, "assets")), ) LOGIN_REDIRECT_URL = '/' ____________________________________________________________
ttz100

2019/04/08 10:41

後日、自分でコースの完成版をGitからダウンロードして確認したところ、 結果的に、Windowsでは進行不可能なコースということでした。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問