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

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

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

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

2回答

3409閲覧

AttributeError: 'str' object has no attribute 'joinpath'のエラーメッセージが出ました。

newtester

総合スコア0

Django

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

0クリップ

投稿2021/12/11 04:02

前提・実現したいこと

djangoでマイグレーションファイルを作る過程で
MEDIA_ROOT = BASE_DIR.joinpath('media')
AttributeError: 'str' object has no attribute 'joinpath'
というエラーがでてしまいました

該当のソースコード

python

1""" 2Django settings for app1 project. 3 4Generated by 'django-admin startproject' using Django 3.0.2. 5 6For more information on this file, see 7https://docs.djangoproject.com/en/3.0/topics/settings/ 8 9For the full list of settings and their values, see 10https://docs.djangoproject.com/en/3.0/ref/settings/ 11""" 12 13import os 14 15# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17MEDIA_ROOT = BASE_DIR.joinpath('media') 18MEDIA_URL = '/media/' 19 20# Quick-start development settings - unsuitable for production 21# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ 22 23# SECURITY WARNING: keep the secret key used in production secret! 24SECRET_KEY = 'onp%hd^l5^gsi^ctx5(l5h-5jcj6sa*ti@xckxdixc)psr^@#3' 25 26# SECURITY WARNING: don't run with debug turned on in production! 27DEBUG = True 28 29ALLOWED_HOSTS = ["*"] 30 31 32# Application definition 33 34INSTALLED_APPS = [ 35 'django.contrib.admin', 36 'django.contrib.auth', 37 'django.contrib.contenttypes', 38 'django.contrib.sessions', 39 'django.contrib.messages', 40 'django.contrib.staticfiles', 41 'app2' 42] 43 44MIDDLEWARE = [ 45 'django.middleware.security.SecurityMiddleware', 46 'django.contrib.sessions.middleware.SessionMiddleware', 47 'django.middleware.common.CommonMiddleware', 48 'django.middleware.csrf.CsrfViewMiddleware', 49 'django.contrib.auth.middleware.AuthenticationMiddleware', 50 'django.contrib.messages.middleware.MessageMiddleware', 51 'django.middleware.clickjacking.XFrameOptionsMiddleware', 52] 53 54ROOT_URLCONF = 'app1.urls' 55 56TEMPLATES = [ 57 { 58 'BACKEND': 'django.template.backends.django.DjangoTemplates', 59 'DIRS': [], 60 'APP_DIRS': True, 61 'OPTIONS': { 62 'context_processors': [ 63 'django.template.context_processors.debug', 64 'django.template.context_processors.request', 65 'django.contrib.auth.context_processors.auth', 66 'django.contrib.messages.context_processors.messages', 67 ], 68 }, 69 }, 70] 71 72WSGI_APPLICATION = 'app1.wsgi.application' 73 74 75# Database 76# https://docs.djangoproject.com/en/3.0/ref/settings/#databases 77 78DATABASES = { 79 'default': { 80 'ENGINE': 'django.db.backends.sqlite3', 81 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 82 } 83} 84 85 86# Password validation 87# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators 88 89AUTH_PASSWORD_VALIDATORS = [ 90 { 91 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 92 }, 93 { 94 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 95 }, 96 { 97 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 98 }, 99 { 100 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 101 }, 102] 103 104 105# Internationalization 106# https://docs.djangoproject.com/en/3.0/topics/i18n/ 107 108LANGUAGE_CODE = 'en-us' 109 110TIME_ZONE = 'UTC' 111 112USE_I18N = True 113 114USE_L10N = True 115 116USE_TZ = True 117 118 119# Static files (CSS, JavaScript, Images) 120# https://docs.djangoproject.com/en/3.0/howto/static-files/ 121 122STATIC_URL = '/static/' 123

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

quickquip

2021/12/11 04:12

質問が書いてないようですが。
guest

回答2

0

joinpathは、pathlibライブラリを使う時のメソッドです。
pathlibを使うように書き換えるか、もしくは、普通に文字列として連結しましょう。

投稿2021/12/11 05:36

otn

総合スコア85901

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

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

0

joinpathはpathlibのメソッドでしょうかね?
それならまずpathlibのimportが必要ですね。

Python

1from pathlib import Path

そしてjoinpathメソッドを使うためにはBASE_DIRPathオブジェクトじゃないといけないのでは。

Python

1BASE_DIR = Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

これで合っているかどうかはわかりませんが。

pathlibではなくos.path.joinなどで処理する方法もあるかと。

os.path --- 共通のパス名操作 — Python 3.10.0b2 ドキュメント

投稿2021/12/11 05:34

編集2021/12/11 05:35
itagagaki

総合スコア8402

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問