私は、ローカル商品の画像をアップロードしたときに、なぜ私はサッチモに絶対URLを取得していますか?
-
06-09-2019 - |
質問
私はジャンゴとサッチモを使用して、いくつかの地域開発をやっています。私は管理者を介して局所的に商品画像をアップロードすると、画像へのパスではなく、適切な相対パスよりも、ドライブ文字と完全に、絶対パスとして表示されます。
ストレンジャーはまだ、サッチモが私の両方で、元の画像とそれが生成するサムネイルの両方を節約し/media/
ディレクトリと/media/images/
ディレクトリ、私はを、後者はの彼らが行ってみたい。
のrelaventの設定があります:
# path relative to the settings.py file
DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8'))
MEDIA_ROOT = os.path.join(DIRNAME, 'media')
MEDIA_URL = 'http://localhost:8000/'
ADMIN_MEDIA_PREFIX = '/media/'
私はトリプルがlocal_settings.pyファイルをチェックし、言葉どこでもそれで「メディア」の言及がない持っているので、私は何も設定のオーバーライドがないと確信しています。
それが助け場合、私はWindows上だけど、私は私のパスのすべての適切なUNIXの表記法を使用しています。
解決 2
問題は、settings.pyファイルにスラッシュ方向の問題ですが判明します。
通常、私は私のsettings.pyファイルにrelative_path()
関数を作成するので、私は簡単に設定することができます:
MEDIA_ROOT = absolute_path('media')
私が使っていたサッチモのバージョンではなく、設定DIRNAMEの使用を奨励します:
DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8')
問題は、この技術を使用して、私のMEDIA_ROOTは、次のような設定されていたました。
MEDIA_ROOT = os.path.join(DIRNAME, 'media')
しかし、これは、Windowsのバックスラッシュの代わりに、Unixのスラッシュを使用していました。
:私はそれを解決しましたMEDIA_ROOT = os.path.join(DIRNAME, 'media').replace('\\', '/')
他のヒント
これはWindowsのみのバグです。私は、Windows上でサッチモのアプリを開発していますし、それがこれを行いますが、私はLinuxボックスに展開するときに、それだけで正常に動作します。私は私のWindowsマシン上でテストをしていたとき、私はちょうどデータベースに行くとそこにパスを編集します。