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()in时没有遇到这个问题manage.py shell。另外,我正在使用 Django 1.4 和 Python 2.7。

任何帮助表示赞赏!提前致谢!

4

1 回答 1

0

在我看来,您的 settings.py 中的某些内容设置不正确您
看到该SuspiciousOperation异常的可能原因是您的 default_storage.location 设置为/root,我认为访问文件系统的根目录绝对是可疑的.

您可能需要检查您是否已MEDIA_ROOT在 settings.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 回答