删除上传的文件时出现Django“SuspiciousOperation”错误

时间:2009-02-20 19:41:08

标签: python windows django

我正在使用manage.py runserver命令在Windows XP上使用Django进行开发来提供文件。 Apache没有涉及。当我登录管理并尝试删除文件时,出现“SuspiciousOperation”错误。

这是追溯:
http://dpaste.com/123112/

这是我的完整模特:
http://dpaste.com/hold/123110/

如何摆脱这个“SuspiciousOperation”错误?

编辑:以下是我的媒体设置:

MEDIA_ROOT = 'C:/Server/Projects/postnzb/static/'
MEDIA_URL = '/static/'

1 个答案:

答案 0 :(得分:5)

MEDIA_ROOT中的settings.py是什么?从后跟踪开始,您似乎已将MEDIA_ROOT设置为/static/

此错误即将发生,因为Django正试图访问它无法访问的/static/。为MEDIA_ROOT添加C:/Documents/static/的绝对路径名,并为Django授予访问该目录的完全权限。

这应该可以解决你的问题。

附录:由于您的MEDIA_ROOT似乎没问题,我猜您使用MEDIA_URL来删除文件而不是MEDIA_ROOT。实际上,从错误看来,Django似乎试图访问/static/files/8.nzb并被拒绝访问。显然,/static/是您的MEDIA_URL,而不是您的MEDIA_ROOT。模型方法永远不应尝试使用MEDIA_URL访问文件。我相信对您的代码的审核会发现错误。

更新:我浏览了您的代码,似乎您将File.nzb设置为使用%(1)sfiles/%(2)s.nzb' % {'1': settings.MEDIA_URL, '2': self.pk}的{​​{1}}然后MEDIA_URL delete()您将delete()的超级File方法调用为super(File, self).delete()的方法显然是错误的,因为它会尝试删除File.nzb并尝试通过MEDIA_URL。修复将摆脱错误。我将把确切的解决方案作为练习留给你:)