私がおススメする書籍「動かして学ぶ! 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版」の商品ページは以下のリンクです。
「動かして学ぶ! 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を活用したり、ググったりすれば解決できると思います。
この記事が気に入ったらサポートをしてみませんか?