2009-02-20 10 views
2

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

Вот отслеживающий:
http://dpaste.com/123112/

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

Как я могу избавиться от этой ошибки "SuspiciousOperation"?

EDIT: Вот мои настройки СМИ:

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

ответ

5

Что такое ваш в settings.pyMEDIA_ROOT? С обратной стороны, кажется, вы установили 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. Я уверен, что обзор вашего кода обнаружит ошибку.

Update: Я обезжиренное свой код, и это, кажется, вы настраиваете 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. Исправление, которое избавится от ошибки. Я оставлю точное решение в качестве упражнения для вас :)

+0

Я добавил настройки своих медиа в свое описание вопроса. MEDIA_ROOT - это, по сути, абсолютный путь. –

+0

Я немного изменил свой ответ. Проверить снова. –

+0

Спасибо, что помогли мне, хотя эта проблема. Оказывается, вы были абсолютно правы. «File.nzb» эфир должен быть полным путем или относительным путем, который не начинается с косой черты. Поскольку я собираюсь развернуть на сервере NIX, я буду использовать относительные пути. Еще раз спасибо! –

Смежные вопросы