私は、ローカル商品の画像をアップロードしたときに、なぜ私はサッチモに絶対URLを取得していますか?

StackOverflow https://stackoverflow.com/questions/732563

質問

私はジャンゴとサッチモを使用して、いくつかの地域開発をやっています。私は管理者を介して局所的に商品画像をアップロードすると、画像へのパスではなく、適切な相対パスよりも、ドライブ文字と完全に、絶対パスとして表示されます。

ストレンジャーはまだ、サッチモが私の両方で、元の画像とそれが生成するサムネイルの両方を節約し/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マシン上でテストをしていたとき、私はちょうどデータベースに行くとそこにパスを編集します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top