SAMURAI TERAKOYA

TypeError at ✖︎✖︎ : argument 1 must be str, not PosixPath 対処法

Django

どうも、何度見ても英語だらけのエラーは、、慣れないなと思っているウツボウです♪
本日は、Djangoをいじっていた際に起きた 「TypeError(argument 1 must be str, not PosixPath)」を解決した際の方法について、ご紹介致します。

発生したエラー

ある程度、コードの入力を終え、、サーバーへアップしたところ….!? 以下のようにエラーが表示されました。

django_typeerror_PosixPath

argument 1 must be str, not PosixPath を翻訳してみると「引数1は、PosixPathではなくstrである必要があります」 でしたが、これだけではさっぱりですね汗 実は、データベース側のエラーで、パスの部分がPosixPath(‘Path’)になってしまうので、ここをstr型へ変換してくれという意味になります。 文章だけですと、分かりづらいかと思いますので、早速、コードを修正していきましょう。

 

スポンサーリンク

解決策

コード修正をしていくフォイルは、プロジェクトフォルダの直下にある「 settings.py 」です。
修正箇所は、大体77行目あたりにあるかと思いますが、以下のコードになります。

DATABASES = {  
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': BASE_DIR / 'db.sqlite3',
   }
}

次のように修正してあげましょう。 str()で文字列に変換してあげます。

'NAME': str(BASE_DIR / 'db.sqlite3'),

修正するのは、ホントにこれだけです(^ ^)
最後にターミナルもしくコマンドプロンプト上で、データベースのmigrateをして、エラーが解消されているか確認してみてください。

python3 manage.py migrate   又は   python manage.py migrate

まとめ

英語でエラーが表示され、翻訳しても意味が分からない.. これはもう..少しずつ慣れるしかないです。そのためにも沢山、コードを書いて、色んなエラーを経験することで、問題に直面した際の対応を迅速に行えるようになります。 今回は、TypeErrorですが、恐らくはDjangoが4.0のローカル環境で作業をし、その後、本サーバー上のバージョンと合わないがために起きたエラーではないかと思ってます。 理由はどうあれ、解決自体は、一部修正し、再度、データベースのmigrateを行うだけで出来ますので、本記事を通して、役に立てれば嬉しいです。

コメント

タイトルとURLをコピーしました