LoginSignup
5
3

More than 5 years have passed since last update.

Django1.4やってて詰まったので、absolute path(絶対パス) と relative path(相対パス) に関する”メモ”書き

Last updated at Posted at 2016-02-17

背景

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に入れてあげたら見事成功!

まとめるっていいことありますね。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3