見出し画像

私がおススメする書籍「動かして学ぶ! Python Django開発入門 第2版 」でエラーが出たところを解説します。

こんにちは!マナパンダです。
今回は、私がおススメする書籍「動かして学ぶ! Python Django開発入門 第2版」でエラーが出たところを解説したいと思います。

Djangoの書籍はたくさんありますが、私が一番おススメしたいのが今回取り上げる「動かして学ぶ! Python Django開発入門 第2版」です。なぜかというと、この書籍はDjangoのコードの書き方がとても丁寧に描かれているだけでなく、データベースの扱い方やバージョン管理システム(GitとGithub)の構築方法など、個人で開発するための知識を一通り網羅しているからです。また、AWS(EC2)でのデプロイ方法が解説されているのもとても助かりました。他の書籍でも、Djangoアプリケーションをデプロイする方法は解説させれていますが、多くはHerokuやVultrなどのVPCやPythonAnywhereだったので、AWSでのデプロイ方法が詳しく書かれているのは参考になりました。

動かして学ぶ! Python Django開発入門 第2版」を参考に開発をしている人で、エラーで悩んでいる方がいたらぜひ参考にしてほしいです。

動かして学ぶ! Python Django開発入門 第2版」の商品ページは以下のリンクです。

https://amzn.to/3Trpngc

動かして学ぶ! Python Django開発入門 第2版」で開発したアプリは以下のURLです。


エラーとその解決方法

①354ぺージの「Amazon SES関連設定」

354ページの「Amazon SES関連設定」では、settings.pyファイルに以下の記述をするように解説されています。

AWS_SES_ACCESS_KEY_ID = os.environ.get('AWS_SES_ACCESS_KEY_ID')
AWS_SES_SECRET_ACCESS_KEY = os.environ.get('AWS_SES_SECRET_ACCESS_KEY')
EMAIL_BACKEND = 'django_ses.SESBackend'

しかし、これだけでは不十分です。django.logファイルには以下のエラー内容が表示されます。

raise error_class(parsed_response, operation_name) botocore.errorfactory.MessageRejected: An error occurred (MessageRejected) when calling the SendRawEmail operation: Email address is not verified. The following identities failed the check in region US-EAST-1:~

これは、送信元メールアドレスと送信先メールアドレスがUS-EAST-1というリージョンで検証されていないというエラーです。これを解決するには、settings.pyファイルに以下の内容を追加する必要があります。

AWS_SES_REGION_NAME="ap-northeast-1" #追加する
AWS_SES_REGION_ENDPOINT="email.ap-northeast-1.amazonaws.com" #追加する

AWS_SES_RESION_NAMEの値は、EC2インスタンスがあるリージョンを記載する必要があります。なので、上記のようにEC2インスタンスがアジアパシフィック(東京)にある場合は”ap-norheast-1”と書き必要があります。

②377ページの「マイグレーションを行う」

377ページの「マイグレーションを行う」では、EC2インスタンスで'python manage.py migrate'を実行するように書かれていますが、実際には以下のエラーが出るはずです。

django.db.utils.OperationalError: FATAL: ユーザ"app_admin"で対向(peer)認証に失敗しました.

このエラーメッセージは、Djangoがデータベースに接続しようとした際に、認証に失敗したことを示しています。特に、「ユーザ"app_admin"で対向(peer)認証に失敗しました」という部分は、PostgreSQLが使用されている場合によく見られるエラーで、peer認証メカニズムに関連しています。peer認証は、UNIXドメインソケットを介して接続するローカルユーザーの認証を行います。この認証では、オペレーティングシステムのユーザー名PostgreSQLのロール名が一致している必要があります。

この問題を解決するには、/var/lib/pgsql/dataにあるpg_hba.confファイルを以下のように編集します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     md5

METHODはpeerとなっていたところをmd5に変えることで、問題なくマイグレーションができるようになります。

まとめ

いかがだったでしょうか?今回取り上げた以外のことでも開発中にエラーが出すことはあるとおもいます。ですが、そんなときにはChatGPTを活用したり、ググったりすれば解決できると思います。


この記事が気に入ったらサポートをしてみませんか?