Bonjour,
J'aimerais supprimer une photo dans un répertoire lors d'une mise à jour. Voici mon code
if formset.is_valid():
if request.FILES['form-0-photo'] != pict.photo:
os.remove(unicode(pict.photo))
formset.save()
avec pict.photo le nom du chemain stocké dans la base donc "si la photo upload est différente de celle dans la base la supprimer"
et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
j'ai changer le chemain en ajoutant d'autres "os.remove("../media/img/unicode(pict.photo))" mais ça marche pas. La photo se trouve dans le répertoire media de mon application django /media/img/image1.jpg
os.remove(unicode(pict.photo)) [...] et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove(). Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
Ca t'affichera à partir d'ou django appele os.remove.
Bruno Desthuilliers
hervest a écrit :
Bonjour, J'aimerais supprimer une photo dans un répertoire lors d'une mise à jour. Voici mon code
if formset.is_valid(): if request.FILES['form-0-photo'] != pict.photo: os.remove(unicode(pict.photo))
Pourquoi "unicode" ?
formset.save()
avec pict.photo le nom du chemain stocké dans la base donc "si la photo upload est différente de celle dans la base la supprimer"
et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
j'ai changer le chemain en ajoutant d'autres "os.remove("../media/img/unicode(pict.photo))" mais ça marche pas.
Ce chemin est relatif au répertoire de travail courant - pas au fichier. Et accessoirement:
La photo se trouve dans le répertoire media de mon application django /media/img/image1.jpg
heu... c'est 'photo/image1.jpg' ou 'img/image1.jpg' ?
Mais bon: de toutes façons, ce que tu veux, c'est le chemin vers ton repertoire media, lequel 1/ est paramétrable et 2/ n'est pas nécessairement un sous-répertoire de ton projet django. Bref:
from django.conf import settings filepath = os.path.join(settings.MEDIA_ROOT, pict.photo) os.remove(filepath)
devrait fonctionner - du moins si filepath existe et que l'utilisateur sous lequel tourne ton appli django a les droits d'écriture qui vont bien sur ce chemin.
HTH
hervest a écrit :
Bonjour,
J'aimerais supprimer une photo dans un répertoire lors d'une mise à jour. Voici
mon code
if formset.is_valid():
if request.FILES['form-0-photo'] != pict.photo:
os.remove(unicode(pict.photo))
Pourquoi "unicode" ?
formset.save()
avec pict.photo le nom du chemain stocké dans la base donc "si la photo upload
est différente de celle dans la base la supprimer"
et j'ai cette erreure ci [Errno 2] No such file or directory:
'photo/image1.jpg'
j'ai changer le chemain en ajoutant d'autres
"os.remove("../media/img/unicode(pict.photo))" mais ça marche pas.
Ce chemin est relatif au répertoire de travail courant - pas au fichier.
Et accessoirement:
La photo se
trouve dans le répertoire media de mon application django /media/img/image1.jpg
heu... c'est 'photo/image1.jpg' ou 'img/image1.jpg' ?
Mais bon: de toutes façons, ce que tu veux, c'est le chemin vers ton
repertoire media, lequel 1/ est paramétrable et 2/ n'est pas
nécessairement un sous-répertoire de ton projet django. Bref:
from django.conf import settings
filepath = os.path.join(settings.MEDIA_ROOT, pict.photo)
os.remove(filepath)
devrait fonctionner - du moins si filepath existe et que l'utilisateur
sous lequel tourne ton appli django a les droits d'écriture qui vont
bien sur ce chemin.
Bonjour, J'aimerais supprimer une photo dans un répertoire lors d'une mise à jour. Voici mon code
if formset.is_valid(): if request.FILES['form-0-photo'] != pict.photo: os.remove(unicode(pict.photo))
Pourquoi "unicode" ?
formset.save()
avec pict.photo le nom du chemain stocké dans la base donc "si la photo upload est différente de celle dans la base la supprimer"
et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
j'ai changer le chemain en ajoutant d'autres "os.remove("../media/img/unicode(pict.photo))" mais ça marche pas.
Ce chemin est relatif au répertoire de travail courant - pas au fichier. Et accessoirement:
La photo se trouve dans le répertoire media de mon application django /media/img/image1.jpg
heu... c'est 'photo/image1.jpg' ou 'img/image1.jpg' ?
Mais bon: de toutes façons, ce que tu veux, c'est le chemin vers ton repertoire media, lequel 1/ est paramétrable et 2/ n'est pas nécessairement un sous-répertoire de ton projet django. Bref:
from django.conf import settings filepath = os.path.join(settings.MEDIA_ROOT, pict.photo) os.remove(filepath)
devrait fonctionner - du moins si filepath existe et que l'utilisateur sous lequel tourne ton appli django a les droits d'écriture qui vont bien sur ce chemin.
HTH
Bruno Desthuilliers
Mihamina Rakotomandimby (R12y) a écrit :
hervest wrote:
os.remove(unicode(pict.photo)) [...] et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove(). Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est susceptible de changer selon la façon dont est lancé le serveur et 2/ le répertoire 'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
Mihamina Rakotomandimby (R12y) a écrit :
hervest wrote:
os.remove(unicode(pict.photo)) [...]
et j'ai cette erreure ci [Errno 2] No such file or directory:
'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove().
Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est susceptible de
changer selon la façon dont est lancé le serveur et 2/ le répertoire
'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
os.remove(unicode(pict.photo)) [...] et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove(). Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est susceptible de changer selon la façon dont est lancé le serveur et 2/ le répertoire 'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
hervest
Bruno Desthuilliers a écrit le 22/01/2009 à 10h26 :
Mihamina Rakotomandimby (R12y) a écrit :
hervest wrote:
os.remove(unicode(pict.photo)) [...] et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove(). Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est susceptible de changer selon la façon dont est lancé le serveur et 2/ le répertoire 'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
bonsoir j'ai résolu j'ai juste fait un pict.photo.delete()
Bruno Desthuilliers a écrit le 22/01/2009 à 10h26 :
Mihamina Rakotomandimby (R12y) a écrit :
hervest wrote:
os.remove(unicode(pict.photo)) [...]
et j'ai cette erreure ci [Errno 2] No such file or directory:
'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé
os.remove().
Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est
susceptible de
changer selon la façon dont est lancé le serveur et 2/ le
répertoire
'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
bonsoir
j'ai résolu j'ai juste fait un pict.photo.delete()
Bruno Desthuilliers a écrit le 22/01/2009 à 10h26 :
Mihamina Rakotomandimby (R12y) a écrit :
hervest wrote:
os.remove(unicode(pict.photo)) [...] et j'ai cette erreure ci [Errno 2] No such file or directory: 'photo/image1.jpg'
Il faudrait voir à partir de quel répertoire est appelé os.remove(). Je te propose de faire un truc du genre:
os.remove(os.getcwd()+unicode(pict.photo))
>
Ca t'affichera à partir d'ou django appele os.remove.
Ce qui ne résoudra pas le problème, puisque 1/ le cwd est susceptible de changer selon la façon dont est lancé le serveur et 2/ le répertoire 'media' de Django est paramétrable.
cf mon autre post dans ce fil pour la solution correcte.
bonsoir j'ai résolu j'ai juste fait un pict.photo.delete()