IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Problème avec l'upload d'un fichier avec filefield


Sujet :

Django Python

  1. #1
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut Problème avec l'upload d'un fichier avec filefield
    Bonjour ,
    j'essaie de faire uploader un fichier dans django, voici mon code :

    models.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    class Event (models.Model):
        date_debut_event = models.DateField()
        date_fin_event = models.DateField()
        nom_event = models.CharField(max_length=40)
        lieu_event = models.CharField(max_length=30)
        type_event = models.CharField(max_length=20)
        inscription_event = models.ManyToManyField(User,through='InscriptionEvent',related_name='user_inscription')
     
        def __str__(self):
            return  self.nom_event
     
     
     
    status_list = [
        ('En attente','En attente'),
        ('Validé','Validé')]
     
     
    class InscriptionEvent (models.Model):
        user_inscrit = models.ForeignKey(User,related_name='user_inscrit', on_delete=models.CASCADE)
        event_inscription = models.ForeignKey(Event,related_name='event_inscrit', on_delete=models.CASCADE) 
        date_inscription = models.DateField()
        status_inscription = models.CharField(max_length=10,choices = status_list)
        file = models.FileField(blank = True)
    views.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    def event_page(request,id):
     
        detail_event = Event.objects.get(id=id)
        detail_inscription = InscriptionEvent.objects.get(user_inscrit=request.user,event_inscription=detail_event)
        print(detail_inscription.file)
        if  InscriptionEvent.objects.filter(user_inscrit=request.user,event_inscription=Event.objects.get(id=id)).exists():
            if request.method == 'POST':
                form = send_confirmation_amount(request.POST, request.FILES)
                if form.is_valid():
     
                    detail_inscription.file = form.cleaned_data['file']
                    detail_inscription.save()
                    return HttpResponseRedirect(reverse('eventPage' ,kwargs={'id':id}))
            else: 
                form = send_confirmation_amount()
     
     
     
     
        return render(request,'event_page.html',{'data_event':detail_event,'form':form})
     
     
    def inscription_congres (request,id):
     
        if not InscriptionEvent.objects.filter(user_inscrit=request.user,event_inscription=Event.objects.get(id=id)).exists():
     
            inscription = InscriptionEvent()
            inscription.user_inscrit = request.user
            inscription.event_inscription = Event.objects.get(id=id)
            inscription.status_inscription = 'En attente'
            inscription.date_inscription = today
     
            inscription.save() 
            messages.success(request, 'demande envoyé')
     
     
        else:
            messages.warning(request, 'demande deja envoyé')
     
        return HttpResponseRedirect (reverse('eventPage',kwargs={'id':id}))
    url.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    urlpatterns = [
        path('',views.home,name='home'),
        path('profilInfo',views.profil_complete,name='profilecomplete'),
        path('DashProfile',views.dash_user,name='dashuser'),
        path('Event/<int:id>',views.event_page,name='eventPage'),
        path('inscription_congres/<int:id>',views.inscription_congres,name='inscriptionCongres'),
     
     
    ]
    forms.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class send_confirmation_amount(forms.ModelForm):
        class Meta:
            model = InscriptionEvent
     
            fields =  ('file',)
    et le template :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <p>{{ data_event.id }}</p>  
    <p>{{ data_event.nom_event }}</p>  
    <p>{{ data_event.date_debut_event }}</p>
    <p>{{ data_event.date_fin_event }}</p>  
    <p>{{ data_event.lieu_event }}</p>
    <p>{{ data_event.type_event }}</p>
     
     
     
     
    <form method="POST" >
        {{ form.as_p }}
        {% csrf_token %}
        <button type="submit" >Envoyer le recu </button>
    </form>
     
     
    <a href="{% url 'inscriptionCongres' data_event.id %}">Inscrivez vous </a>
    {% for message in messages %}
    <strong>{{ message }}</strong> 
    {% endfor %}


    le problème est avec la vue event_page, quand je click sur 'envoyer le recu sur la page web' la page se re fraiche mais rien se passe , et dans l'admin rien ne s'ajoute , je peux même pas debugger , je ne comprend pas pourquoi, j'ai beau essayer de trouver le problème pendant 2jour mais rien,
    svp pouvez vous m'aider a voir plus claire,
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonjour,

    Dans la documentation il est indiqué ceci,

    FILES ne contient des données que si la méthode de requête est POST et que l’élément <form> qui a servi pour envoyer la requête contient enctype="multipart/form-data". Sinon, FILES est un objet de type dictionnaire vide.
    Source : https://docs.djangoproject.com/fr/4....pRequest.FILES
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec l'upload des fichiers
    Par bousyass dans le forum JSF
    Réponses: 6
    Dernier message: 03/06/2010, 14h37
  2. Problème lors d'upload de gros fichiers
    Par Haomaru_91 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 22/05/2007, 17h12
  3. [Upload] Problème avec l'upload : Pas de fichier tmp !
    Par commedab dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2007, 13h38
  4. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo