Python の os.path を使用して、1 つ上のディレクトリに移動するにはどうすればよいでしょうか? 質問する

Python の os.path を使用して、1 つ上のディレクトリに移動するにはどうすればよいでしょうか? 質問する

最近、Django を v1.3.1 から v1.4 にアップグレードしました。

私の昔のsettings.py私は

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname( __file__ ), 'templates').replace('\\', '/'),
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

これは を指します/Users/hobbes3/Sites/mysite/templatesが、Django v1.4ではプロジェクトフォルダがアプリフォルダと同じレベルに移動されたため、私のsettings.pyファイルは/Users/hobbes3/Sites/mysite/mysite/ではなく になりました/Users/hobbes3/Sites/mysite/

つまり、私の質問は実際には2つあります。

  1. os.pathから 1 レベル上のディレクトリを検索するには、どのように使用すればよいですか__file__。つまり、相対パスを使用して/Users/hobbes3/Sites/mysite/mysite/settings.py検索したいのです。/Users/hobbes3/Sites/mysite/templates
  2. フォルダー (、などtemplateのアプリ間テンプレートを含む) はプロジェクトレベルに保持する必要がありますか、それとも に保持する必要がありますか?adminregistration/User/hobbes3/Sites/mysite/User/hobbes3/Sites/mysite/mysite

ベストアンサー1

os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))

テンプレート フォルダーをどこに配置すればよいかは、Django 1.4 がリリースされたばかりでまだ確認していないためわかりません。この問題を解決するには、SE で別の質問をしたほうがよいでしょう。

normpathパスをクリーンアップするには、 ではなくを使用することもできますabspath。ただし、この状況では、Django は相対パスではなく絶対パスを想定しています。

クロスプラットフォームの互換性を確保するには、os.pardirの代わりにを使用します'..'

おすすめ記事