Django «SuspiciousOperation» Ошибка при удалении загруженного файла - PullRequest
2 голосов
/ 20 февраля 2009

Я работаю в Django на Windows XP, используя команду manage.py runserver для обслуживания файлов. Apache не участвует. Когда я вхожу в администрацию и пытаюсь удалить файл, я получаю сообщение об ошибке «SuspiciousOperation».

Вот трассировка:
http://dpaste.com/123112/

Вот моя полная модель:
http://dpaste.com/hold/123110/

Как мне избавиться от этой ошибки «SuspiciousOperation»?

РЕДАКТИРОВАТЬ: Вот мои настройки медиа:

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

1 Ответ

5 голосов
/ 20 февраля 2009

Какой у тебя MEDIA_ROOT в settings.py? Из обратной трассировки кажется, что вы установили MEDIA_ROOT на /static/.

Эта ошибка появляется, поскольку Django пытается получить доступ к /static/, к которому у него нет доступа. Укажите абсолютный путь для MEDIA_ROOT, например C:/Documents/static/, и дайте Django полные права доступа к этому каталогу.

Это должно решить вашу проблему.

Приложение : Поскольку ваш MEDIA_ROOT выглядит нормально, я предполагаю, что вы используете MEDIA_URL для удаления файла вместо MEDIA_ROOT. Действительно, из-за ошибки кажется, что Джанго пытался получить доступ к /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}, который использует MEDIA_URL, а затем в методе delete() вы вызываете метод delete() суперкласса File как super(File, self).delete(), что явно неверно, так как он попытается удалить File.nzb и попытается получить доступ к файлу через MEDIA_URL. Исправление, которое избавит от ошибки. Я оставлю вам точное решение в качестве упражнения:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...