Django Girls Tutorial をやってみて詰まったところ
諸事情によりPython/Djangoをやることになり、Django Girls Tutorialをやってみました。 やってみたところ、いくつか詰まった箇所があったのでメモしておこうと思います。
Django Girls Tutorial って何?
比較的多くの人がオススメしているDjangoのチュートリアルです。自分は知人にオススメされてやってみた勢です。
チュートリアルの目次(+雑メモ)
詰まったところや詰まりやすそうなところに★つけてます
- workshop_tutorialJP
legacy.gitbook.com
のDjangoGirlsJapan > workshop_tutorialJPのページに飛びますlegacy.gitbook.com
のアカウントがないとログインできなくて切ないし、そもそも"legacy"なので新しいアカウントを作ることができなくて切ないです
- イントロダクション
- やっていこうぜ?という気持ちになります
- 『こんなブログサイトを作ってインターネットに公開するよ!』と言われて初学者の皆さんはハイな気持ちになります
- インターネットはどうやって動いているの?
- わかりやすいです。非エンジニアさんに読まれたいです。
- IPアドレスとかの雰囲気が分かるようになります
- コマンドラインを使ってみよう
- コマンドラインが使えるようになります
- Pythonをインストールしよう
- 必ずPython3.6系をインストールしましょう
- 『諸事情で2.7系で進めます〜』とか『今の最新の3.7系でやるっす!!!』とかやると、後々詰まります。★
- コードエディタ
- エディタはまあなんでもいいです(JetBrainsのAllProductパックを持っている自分はPyCharm一択でした)
- Pythonをはじめよう
- Pythonコーディングの基礎が分かって嬉しい気持ちになります
- Djangoってなぁに?
- そうだね
- Djangoをインストールしよう
- virtual environment (virtualenvとも呼ばれています)を作成し、その中でDjangoをインストールします
- プロジェクトを作成しよう
- 言われた通りにコマンドを叩いていくと動いたよありがとうという気持ちになります
- Djangoモデル
- オブジェクト、モデル、(Djangoにおける)application、データベース、テーブル、などの単語の出現により、初学者の脳内メモリのキャパを越えると思います
- でも言われて通りに書き換えていくとうまくいきます。きっと不思議な気持ちになります。
- ログインページを作ろう(Django admin)
- ブラウザ上で記事を作成することができてハイになります
- デプロイ!
- HerokuとかGitが出てきて初学者は迷宮入りする可能性が高いです。
- あと普通に手順の更新が追いついていないところがあります★
- 手順通りに正しくやるとさっき(ログインページを作ろう)まで動いていたローカル環境もエラーになります
- 当然Herokuにデプロイしてもエラーになります
- Django urlsってなに? ★
- Djangoビューってなに?
- "
model
から情報を取得しtemplate
に渡します" とか言われてもmodelもviewもワカンねぇよ〜ってなると思います - それはそう、仕方ないです
- "
- HTMLをやってみよう
- ここは分かるのでホッとするんじゃないでしょうか(HTMLが全くわからずにDjangoやるぜ!って人はまあいないだろうという想定)
- クエリセット1
- データベースへの接続方法ね、OK、言われた通りにやるよ ってなると思います
- クエリセット2
- OK分かった、言われた通りにやるよ ってなると思います
- テンプレートに表示しよう
- 変数埋め込めるの便利だねってなります
- CSSでカワイくしよう
- bootstrap便利だね、CSS楽しいねってなります
- テンプレートを拡張しよう
- 共通部分を切り出すことができて嬉しいねってなります
- アプリケーションを拡張しよう
- ブログごとの詳細ページが見れて嬉しいねってなります
- フォームを作ろう
- ブログの新規投稿と編集ができるようになって嬉しいねってなります
- ドメインを設定しよう
- 急に英語やん!!ってなります
- ドメインが気になる人だけやればいいんじゃないかなって思います
- 次のステップは?
- "このチュートリアルの拡張版である、Django Girls Tutorial: Extensionsを試してみてください" って言われます
- また英語やん!!ってなります(英語に強くなりましょうって思います(思います))
詰まりポイントと解決策
手順通りにやると確実に詰まる箇所が2つありました。両方ともデプロイ!のところです。1つずつ見ていきます。
①Psycopg
発生する事象
『Herokuにデプロイできないよ〜〜〜』
問題詳細
- チュートリアルに以下のような手順があります
ファイルを開いて、最終行に次の1行を追加しましょう:
psycopg2==2.5.4
これは、あなたのアプリケーションをHerokuで動かすために必要な1行です。 - Psycopgは公式ドキュメントによると
Psycopg is the most popular PostgreSQL database adapter for the Python programming language.(Psycopgは、Pythonプログラミング言語のための最も一般的なPostgreSQLデータベースアダプタです。)
- 手順の通りに進めると、Herokuにデプロイする際に以下のようなエラーになります
Command "python setup.py egg_info" failed
解決策
- まずpsycopg2をアップグレードしてください
pip install --upgrade psycopg2
- 次にアップグレード後のpsycopg2のバージョンを確認してください
pip freeze
- 最後に
requirement.txt
にそのバージョンを記載したら完了ですpsycopg2==O.O.O
②WhiteNoise
発生する事象
『なんかローカルがエラーになってる!?さっきまで動いてたのに...!!』
問題詳細
- このチュートリアルでは、Herokuにデプロイするにあたって、WhiteNoiseを使っています
- 手順通り
pip install dj-database-url gunicorn whitenoise
すると、WhiteNoise v4.0 がインストールされます - このv4.0にはブレーキングチェンジがあります...!
- 公式ドキュメントによると↓とのこと
The WSGI integration option for Django (which involved editing wsgi.py) has been removed. Instead, you should add WhiteNoise to your middleware list in settings.py and remove any reference to WhiteNoise from wsgi.py. (DjangoのWSGI統合オプション(wsgi.pyの編集を含む)は削除されました。 代わりに、settings.pyのミドルウェアリストにWhiteNoiseを追加し、wsgi.pyからWhiteNoiseへの参照を削除する必要があります。)
- 公式ドキュメントによると↓とのこと
- これに対応できていないため、以下のようなエラーが出ます
'(Djangoプロジェクト名).wsgi.application' could not be loaded;
解決策
- mysite/settings.pyの
MIDDLEWARE
に、以下を追記する'whitenoise.middleware.WhiteNoiseMiddleware',
- mysite/wsgi.pyの編集(追記)をしない
次にmysite/wsgi.pyファイルを開き、最終行に次のとおり追加してください
と書いてありますが、無視してください
終わりに
初学者の方がこれ系をやるときは書かれている通りのバージョンで実施することが大事かな、と思います。書かれている通りのバージョンでやっていると、前提が整うのでエラーの原因を探しやすいかなと思います。
かくいう自分が書かれている通りのバージョンでやらなくて詰まりまくったので一応それも記載しておきます。
[残念な例]
- 『プロジェクトの諸事情でPython2.7系で進めます〜』
- WhiteNoise v4.0 がPython3.3未満はサポート対象外
- あるいは、
pip install whitenoise==X.x.x
みたいな感じで、2.7系に対応するバージョンを指定してあげればいいかもしれません- が、個人的にはバージョンを下に揃えるアプローチは好きじゃないので非推奨です
- 『今の最新のPython3.7系でやるっす!!!』
以上! お疲れっした