背景
Djangoを覚えようとしてて勉強してたんだけど、pathのあたりでつまずいたのでこの問題だろうと思って調べた。
relative path
自分のいまいるディレクトリをを基準にしてファイルを呼び出す方法。自分のいるところから見た景色をもとにしてpathを書く
Djangoの練習をしているので、以下を参考にして説明。現在いるディレクトリは以下のような感じ。
/Users/ユーザー名/Projects/python/dj/mysite
mysiteディレクトリのファイル構成はこれ。
├── books
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── admin.py
│ ├── admin.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ ├── views.py
│ └── views.pyc
├── manage.py
├── mydb
今現自在自分は大元の . のところ(mysiteディレクトリ)にいる。相対パスでbooksの中のadmin.pyを呼び出すならば、
books/admin.py
とやるだけ。なんだ簡単かよ。
absolute path
コンピューターのrootからみた景色をもとにしてpathを書く。自分がどこにいるかに関係なく、呼び出す。
上と同じ例でいくと、
/Users/ユーザー名/Projects/python/dj/mysite
要はターミナル開いて、
pwd
って打ってでてきたパスを入力してあげるらしい。
それでもやっぱり謎はある
結局これを調べて両方やってみても大元の謎は解けなかった。てかtemplateが存在するディレクトリまでいって正しい名前でコールしてるにも関わらず、
template does not exist
とか言われ続けて辛かった。
2日間調べて悩んだ挙句、
import os
PATH_PROJECT = os.path.realpath(os.path.dirname(__file__))
ってやって、TEMPLATE_DIRのところに
PATH_PROJECT + '/templates/'
ってやることでなんとか解決した。未だ謎だけど。
追記
と思ったら解決した!絶対パスの基準点の書き方が違っていたらしく、shellでpwd呼び出して打って、出てきたパスをTEMPLATE_DIRに入れてあげたら見事成功!
まとめるっていいことありますね。