Python
Django
Heroku

点をつけるんよ…

PythonとDjangoでウェブアプリを作ってみる。参考サイトはDjangogirlssite
オモローなところとかTILをこれから書いていく

今回ははじめてのDjangoでデプロイするときの落とし穴。あるあるネタの塊なんだけれど芸術点高めな躓き方をしたので記念に書いておく。
Djangogirlsディレクトリがカレント、んでもってここがvenvのはじまりの地。
この地にDjangoをいんすこして環境を組み立てるわけだね。
$Django-admin startproject mysite .
これ
Djangogirls
├ manage.py
└ mysite
  ├ init.py
  ├ settings.py
  ├ urls.py
  └ wsgi.py
こうなる
$Django-admin startproject mysite
じゃあこれは
Djangogirls/
└mysite/ 
  ├manage.py
  └mysite/
    ├init.py
    ├settings.py
    ├urls.py
    └wsgi.py
こうなる

startproject
django-admin startproject name [directory]

If the optional destination is provided, Django will use that existing directory as the project directory, and create manage.py and the project package within it. Use ‘.’ to denote the current working directory.

Django 2.1.dev20171225171709 documentationより
つまり、オプションとしてディレクトリを指定した場合は既存の指定ディレクトリにmanage.pyとゆかいな仲間たちを創り上げる。”.”をつけるとカレントディレクトリに愉快なヤツらを召喚するわけだ。
じゃあ、「プロジェクト名」だけが与えられた時…Django神はいったい何をするのか…。

If only the project name is given, both the project directory and project package will be named and the project directory will be created in the current working directory.

Django 2.1.dev20171225171709 documentationより
なんと…「プロジェクト名」と名付けられたプロジェクトディレクトリ(新しい大陸)をあらたに創造し、そこに例のやつらを産み出すということらしい。

ここがオチです!

自分のレイアウトと違う場合

デフォルトのプロジェクトのレイアウトが最近変わりました。もし、フラットな レイアウトの場合 (内側の mysite/ ディレクトリがない場合) は、この チュートリアルのバージョンとは違う Django のバージョンを使用していること でしょう。古いチュートリアルを参照するか、新しいバージョンの Django を 入手してください。

Django ドキュメントrevision-up-to: 17812 (1.4)より

何言ってるんだコイツ…できるといいね。。
結局些細なことではあるんだけれどこういうことの積み重ねでデプロイのハードルがどんどん上がっちゃうんだろうなぁ。ドット打ち忘れたディレクトリ配置でデプロイしてみて、サーバ側のDBサーバのmigrateまでやってもサイトにうまく表示できなくて…。そもそもGitで設定する段階から無視リストがチュートリアル通りに設定されてなかったり後々重大な問題になる気がするよ。
まあ今回は「プロジェクト名のフォルダを新規作成して、そこに環境が構成される」から、以降のすべての操作についてもカレントディレクトリがプロジェクト名以下かどうかを意識すれば解決するのかな…。