python - Django 'SuspiciousOperation' Fejl under sletning af uploadet fil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg udvikler i Django på Windows XP ved hjælp af kommandoen manage.py runserver for at betjene filer. Apache er ikke involveret. Når jeg logger ind på administrationen og forsøger at slette en fil, får jeg en fejlmeddelelse 'SuspiciousOperation'.


Her er sporingen:

http://dpaste.com/123112/[27]


Her er min fulde model:

http://dpaste.com/hold/123110/[28]


Hvordan kan jeg slippe af med denne 'SuspiciousOperation' -fejl?


EDIT: Her er mine medieindstillinger:


MEDIA\_ROOT = 'C:/Server/Projects/postnzb/static/'
MEDIA\_URL = '/static/'

Bedste reference


Hvad er din MEDIA\_ROOT i settings.py? Fra backsporet ser det ud til, at du har indstillet din MEDIA\_ROOT til /static/.


Denne fejl kommer, da Django forsøger at få adgang til /static/, som den ikke har adgang til. Angiv et absolut stinavn for MEDIA\_ROOT som C:/Documents/static/ og giv fuld tilladelse til Django for at få adgang til denne mappe.


Det skal løse dit problem.


Addendum : Da din MEDIA\_ROOT synes at være OK, gætter jeg på, at du bruger MEDIA\_URL for at slette filen i stedet for MEDIA\_ROOT. Faktisk ser det ud til, at Django forsøgte at få adgang til /static/files/8.nzb og blev nægtet adgang. Det er klart, at /static/ er din MEDIA\_URL og ikke din MEDIA\_ROOT. Modelmetoderne bør aldrig forsøge at få adgang til filerne ved hjælp af MEDIA\_URL. Jeg er sikker på, at en anmeldelse af din kode vil vise fejlen.


Opdatering : Jeg skummet din kode, og det ser ud til, at du indstiller File.nzb til \%(1)sfiles/\%(2)s.nzb' \% {'1': settings.MEDIA\_URL, '2': self.pk}, som bruger sin MEDIA\_URL og derefter i delete() metoden, er du kalder delete() -metoden til superklassen af ​​File som super(File, self).delete(), hvilket åbenbart er forkert, da det vil forsøge at slette File.nzb og forsøge at få adgang til filen gennem MEDIA\_URL. Fastgørelse, der vil slippe af med fejlen. Jeg vil forlade den nøjagtige løsning som en øvelse til dig :)