2

初めて投稿するので、私はこれを正しくやっていると思います。

「myapp/admin.py」でカスタム管理フォームを作成しており、次の行を使用しています: default_storage.exists('/usr/tmp/somefile.txt')

ただし、は例外exists()をスローしています。SuspiciousOperation調べてみたところ、問題はsafe_join(base, *paths)「_os.py」にあるようです。

基本パラメータがに設定されていることがわかり'/'、これにより次のコードが壊れますsafe_join()

if not normcase(final_path).startswith(normcase(base_path)) \
  or final_path[base_path_len:base_path_len+1] not in ('', sep):
    raise ValueError('The joined path (%s) is located outside of the base '
                     'path component (%s)' % (final_path, base_path))

default_storage.exists()で使用するときにこの問題が発生することはありませんmanage.py shell。また、Django1.4とPython2.7を使用しています。

どんな助けでも大歓迎です!前もって感謝します!

4

1 に答える 1

0

settings.pyで何かが正しく設定されていないように思われます
。このSuspiciousOperation例外が表示される理由として考えられるのは、default_storage.locationが/rootに設定されているためであり、ファイルシステムのrootにアクセスできるかどうかは間違いなく疑わしいと思います。 。

MEDIA_ROOTsettings.pyで、ストレージの場所として妥当なものに設定されていることを確認することをお勧めします:
https ://docs.djangoproject.com/en/1.4/ref/settings/#media-root

default_storage.locationの値はMEDIA_ROOTから派生しているようです。私にとって、それはその値に等しいです。場所よりも高い場所にあるパスでdefault_storage.exists()を実行しようとすると、その例外も発生します。

于 2012-05-17T23:37:11.960 に答える