2009-02-20 11 views
2

Je suis en développement dans Django sur Windows XP en utilisant la commande manage.py runserver pour servir des fichiers. Apache n'est pas impliqué. Lorsque je me connecte à l'administration et que j'essaie de supprimer un fichier, j'obtiens une erreur "SuspiciousOperation".Django "SuspiciousOperation" Erreur lors de la suppression du fichier téléchargé

Voici le retraçage:
http://dpaste.com/123112/

Voici mon modèle complet:
http://dpaste.com/hold/123110/

Comment puis-je me débarrasser de cette erreur "SuspiciousOperation"?

EDIT: Voici mes paramètres médias:

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

Répondre

5

Quelle est votre MEDIA_ROOT à settings.py? À partir du back-trace, il semble que vous avez défini votre MEDIA_ROOT sur /static/.

Cette erreur arrive depuis que Django tente d'accéder à /static/ auquel il n'a pas accès. Mettez un chemin d'accès absolu pour MEDIA_ROOT comme C:/Documents/static/ et donnez des autorisations complètes à Django pour accéder à ce répertoire.

Cela devrait résoudre votre problème.

Addendum: Étant donné que votre MEDIA_ROOT semble être OK, je suppose que vous utilisez MEDIA_URL pour supprimer le fichier au lieu de MEDIA_ROOT. En effet, à partir de l'erreur, il semble que Django essayait d'accéder au /static/files/8.nzb et se voyait refuser l'accès. Clairement, /static/ est votre MEDIA_URL et non votre MEDIA_ROOT. Les méthodes du modèle ne devraient jamais essayer d'accéder aux fichiers en utilisant le MEDIA_URL. Je suis sûr qu'un examen de votre code détectera l'erreur.

Mise à jour: J'écrémé votre code et il semble que vous définissez File.nzb-%(1)sfiles/%(2)s.nzb' % {'1': settings.MEDIA_URL, '2': self.pk} qui utilise son MEDIA_URL puis dans la méthode delete() vous appelez la méthode delete() de la super-classe de File comme super(File, self).delete() qui est évidemment faux comme il va essayer de supprimer File.nzb et essaiera d'accéder au fichier via le MEDIA_URL. Correction qui va se débarrasser de l'erreur. Je vais laisser la solution exacte comme un exercice pour vous :)

+0

J'ai ajouté mes paramètres de médias à ma description de la question. MEDIA_ROOT est, en fait, un chemin absolu. –

+0

J'ai édité ma réponse un peu. Revérifier. –

+0

Merci d'avoir aidé mon si ce problème. Il s'avère que vous étiez complètement correct. "File.nzb" ether doit être un chemin complet ou un chemin relatif qui ne commence pas par la barre oblique. Puisque je vais déployer sur un serveur NIX, j'utiliserai des chemins relatifs. Merci encore! –

Questions connexes