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

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

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

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

Python

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

Q&A

4回答

2638閲覧

Djangogirlsのチュートリアルでmodels.py が実行できない

kaz....

総合スコア8

Django

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

Python

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

0グッド

0クリップ

投稿2017/09/28 03:35

###前提・実現したいこと
Djangogirlsというサイトのチュートリアルに従いブログの作成をしていたところ、models.pyの編集したところでエラー出てしまい困っています。お助け頂きたいです。
■ チュートリアル
https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/how_the_internet_works/index.html
###発生している問題・エラーメッセージ

Traceback (most recent call last): File "/Users/you/djangogirls5/blog/models.py", line 8, in <module> class Post(models.Model): File "/Users/you/djangogirls5/blog/models.py", line 9, in Post author = models.ForeignKey('auth.User') File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 846, in __init__ to, on_delete, from_fields=['self'], to_fields=[to_field], **kwargs) File "/Library/Python/2.7/site-packages/django/db/models/fields/related.py", line 491, in __init__ super(ForeignObject, self).__init__(rel=rel, **kwargs) File "/Library/Python/2.7/site-packages/django/db/models/fields/__init__.py", line 172, in __init__ self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 56, in __getattr__ self._setup(name) File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 39, in _setup % (desc, ENVIRONMENT_VARIABLE)) django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. [Finished in 1.809s] Git GitHub (preview)

###該当のソースコード

#models.py #!/usr/bin/python from django.db import models from django.utils import timezone class Post(models.Model): author = models.ForeignKey('auth.User') title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField( default=timezone.now) published_date = models.DateTimeField( blank=True, null=True) def publish(self): self.published_date = timezone.now() self.save() def __str__(self): return self.title

###該当のソースコード

#settings.py """ Django settings for mysite project. Generated by 'django-admin startproject' using Django 1.11. For more information on this file, see https://docs.djangoproject.com/en/1.11/topics/settings/ For the full list of settings and their values, see https://docs.djangoproject.com/en/1.11/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__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'a50vp3o@9#*tldh*3bzb6voehi_)xv#bu&p1+i2ed1cf6!hu4(' # 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 = 'mysite.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': 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 = 'mysite.wsgi.application' # Database # https://docs.djangoproject.com/en/1.11/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/1.11/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/1.11/topics/i18n/ LANGUAGE_CODE = 'ja-JP' TIME_ZONE = 'Asia/Tokyo' USE_I18N = True USE_L10N = True USE_TZ = False # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.11/howto/static-files/ STATIC_URL = '/static/'

###試したこと
1.
djangoチュートリアルに従い、
export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin runserver を実行したところ、ModuleNotFoundError: No module named 'mysite'というエラーが出ました。

https://docs.djangoproject.com/ja/1.11/topics/settings/#using-settings-without-setting-django-settings-module

python2,3ともにインストールしているので以下のサイトに従いmodels.pyのシェバン行を#!/usr/bin/python3に変更しましたが、以下のようにエラーが出ました。

https://blogware.info/python/prog/shebang/

Unable to run /usr/bin/python3 Did you start Atom from the command line? atom . Is it in your PATH? PATH: /Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Frameworks/Python.framework/Versions/3.6/bin

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

python3.6.2
mac OS

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

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

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

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

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

guest

回答4

0

django-admin makemigrations blog
とすると記載のエラーがでます。

python manage.py makemigrations blog
と実行しましょう。

投稿2017/11/01 08:12

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

Djangogirlsチュートリアルどおりに最初から最後まで全部実行できた者です。

Django、Pythonは初心者レベルで見よう見まねで取り組んだだけなので、的外れの回答かもしれないことは、前置きしておきます。

質問文のコードで気になったとは、以下の部分です。

#models.py !/usr/bin/python

Djangogirlsの説明に

blog/models.pyを開いて全部削除し、下のコードを書きます:

とあるので、私が実行したときは、文面どおりこの部分は削除しています。(それが正しいかどうか不明ですが。)

また、他の方指摘されている「settings.py」の場所ですが、多分、ここに貼り付けとき表示がずれて「djangogirls」直下のように見えてるだけです。
実際は、「djangogirls>mysite>settings.py」ですよね?
チュートリアルどおりだとしたら、mysite内で問題ないかと思います。
(チュートリアルにかかれているやり方が特殊だとしたら私にはわかりません。)

検討違いのことを言ってるかもしれませんが、参考までに。

投稿2017/10/01 16:11

編集2017/10/01 16:13
taktaktak

総合スコア349

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

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

kaz....

2017/10/02 08:12

ご指摘ありがとうございます、settings.pyの場所が貼り付けの際にずれてしまったようです。models.pyにおいてdjangogirlsのチュートリアル通り実行しても、エラーが発生してします...
guest

0

>djangoチュートリアルに従い、
>export DJANGO_SETTINGS_MODULE=mysite.settings
>django-admin runserver を実行したところ、ModuleNotFoundError: No module named 'mysite'というエラーが出ました。

ModuleNotFoundError: No module named 'mysite'
はsettings.pyが入っているmysiteフォルダが見つけられずにエラーが出ている可能性があります。

そもそもmysiteフォルダはありますか?

mysiteフォルダの中に
blogフォルダ、mysiteフォルダがあり、
さらに内側のmysiteフォルダの中にsettings.py
がある状態じゃないと動かない可能性があります。

追記
一般的なディレクトリ構成
djangogirls
├── blog
│ ├── init.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── init.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── djangogirls
│ ├── init.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
└── mysite (これがちょっと変?)

投稿2017/09/28 09:57

編集2017/10/01 08:32
acre_maker

総合スコア145

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

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

kaz....

2017/09/28 11:32

ディレクトリとファイルはこのようになっています、今回のケースでは一番はじめのmysite=djangogirlsという事であっているでしょうか? djangogirls ├── blog │ ├── __init__.py │ ├── admin.py │ ├── apps.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── db.sqlite3 ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
acre_maker

2017/09/28 20:06 編集

その状態なら export DJANGO_SETTINGS_MODULE=settings でやってみてください。 いかがでしょうか?
kaz....

2017/09/30 05:39

実行したところ、models.pyを実行した時のエラーは変わらずで、django-admin runserverを実行すると、ModuleNotFoundError: No module named 'settings'のエラーが出てしました..
acre_maker

2017/10/01 08:33 編集

普通settings.pyはdjangogirlsの中にさらにdjangogirlsフォルダを作ってその中にいれるんですよ。 そちらのディレクトリを参考に追記したのでこのようにファイルを移動して export DJANGO_SETTINGS_MODULE=djangogirls.settings してから実行してみてください。 参考 https://docs.djangoproject.com/ja/1.11/intro/tutorial01/
kaz....

2017/10/02 08:06

他の方が指摘されている通り、settings.pyの場所がここに貼り付けとき表示がずれてしまったようで、「djangogirls>mysite>settings.py」となっていました。大変申し訳ありません。
acre_maker

2017/10/02 23:41 編集

なるほど、それでしたらディレクトリの構成は一般的ですね。 >export DJANGO_SETTINGS_MODULE=mysite.settings >django-admin runserver の代わりに manage.pyと同じディレクトリ(つまりdjangogirlsの中)に移動して export DJANGO_SETTINGS_MODULE=mysite.settings python manage.py runserver してもらえますか?
kaz....

2017/10/04 03:19

export DJANGO_SETTINGS_MODULE=mysite.settings を実行したとろ、 ModuleNotFoundError: No module named 'mysite'というエラーは出なかったのですが、models.pyを実行したところ、django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. というエラーが出てしまいました...
acre_maker

2017/10/04 03:44 編集

それは、こちらの説明に関するエラーですね。 https://docs.djangoproject.com/ja/1.11/topics/settings/#either-configure-or-django-settings-module-is-required ようするにexport DJANGO_SETTINGS_MODULE=mysite.settingsが認識されていなさそうです。 上記のサイトで説明されているsettings.configure()で設定するか 環境変数DJANGO_SETTINGS_MODULEが正しく設定されているか確認したほうがよさそうですね。 環境変数DJANGO_SETTINGS_MODULEが正しく設定されているか確認するなら manage.pyをエディタなどで開いて if __name__ == "__main__": のすぐ下に for k, v in os.environ.items(): print(k, v) と追加してから export DJANGO_SETTINGS_MODULE=mysite.settings python manage.py runserver と実行したらエラーが出る前にバーっと環境変数が表示されます。 その中に('DJANGO_SETTINGS_MODULE', 'mysite.settings') と表示されてなかったら環境変数が認識されていません。 そもそもmanage.pyのif __name__ == "__main__":のすぐ下に os.environ.setdefault("DJANGO_SETTINGS_MODULE", 〜) とありませんか?ありましたら〜の部分は何になっていますか?
acre_maker

2017/10/05 06:46

偶然職場で同じ症状でている人がいました。 os.environ.setdefault("DJANGO_SETTINGS_MODULE", 〜) を正しく設定しているとエラー消えるみたいです。
guest

0

シェバンのパスが気になります。

Python3はどのようにインストールしましたでしょうか?

もしPython3パスが分からない場合は、以下コマンドを実行して、Python3のパスを確認してください。

bash

1type python3

投稿2017/09/28 05:03

manzyun

総合スコア2244

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

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

kaz....

2017/09/28 06:11

そちらのコマンドを実行しましたところ、 python3 is /Users/you/djangogirls/myvenv/bin/python3 と表示されました!
kaz....

2017/10/04 03:34

すみません、勘違いしてました。python3はpythonの公式サイトからダウンロードしていました。アンインストールし、homebrewでpython3をインストールし、pyvenvでpython3の設定をしたのですが、エラーが変わらずでした...パスは現在このようになっています。 python3 is /Users/you/.pyenv/shims/python3
manzyun

2017/10/05 02:16 編集

2017年9月28日時点だと、venv仮想環境で動かしてるpythonが動いていると認識できます。 でも入門で仮想環境使うかな? というのが個人的な感想ですが、ばっちり使ってますね。 https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/django_installation/ ですので、とりあえず私のこの回答では、 「MacにインストールされてるPythonとは別のPythonが使われている」 ということは説明できます。 で、ちょっと気になったのが、その仮想環境でデフォルトで使われているPythonのバージョンが気になりました。 type python と仮想環境で実行したらなんと表示されますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問