Django-fr

Forum

#1 28-05-2019 16:30:49

wilfrid
Membre
Inscription : 24-08-2014
Messages : 5

Téléverser un fichier

Tout d'abord je n'ai rien trouvé dans le forum avec les mots "téléverser", "fichier", "envoie fichier".

Je souhaite par le moyen d'un formulaire téléverser un fichier sur le serveur (sans traitement pour le moment, ni contrainte de format de fichier).


J'ai suivi la documentation officiel sur l'envoie de fichier : https://docs.djangoproject.com/fr/2.2/t … e-uploads/

Voici mon code aujourd'hui dans l'application "arch", bien que j'ai fait de nombreux tests que je n'ai suivi de manière rigoureuse malheureusement.

dans le fichier forms.py

from django import forms
class ModelFormWithFileField(forms.Form):
    title = forms.CharField(label='Titre', max_length=50)
    file = forms.FileField()

dans le fichier views.py

from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import ModelFormWithFileField

def upload_file(request):
    if request.method == 'POST':
        form = ModelFormWithFileField(request.POST, request.FILES)
        if form.is_valid():
            # file is saved
            form.save()
            return HttpResponseRedirect('/arch/files/')
    else:
        form = ModelFormWithFileField()
    return render(request, 'arch/upload.html', {'form': form})

dans le fichier urls.py

from django.urls import path
from . import views

*urlpatterns = [
    path('upload/', views.upload_file, name='fichier'),
]

dans le fichier templates/arch/upload.html

<h1>Upload</h1>

<h2>Formulaire d'envoie de fichier</h2>

<form enctype="multipart/form-data" action="{% url 'fichier' %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="envoyer" />
</form>


Message d'erreur:

AttributeError at /arch/upload/

'ModelFormWithFileField' object has no attribute 'save'

Request Method:     POST
Request URL:     http://192.168.1.102:8000/arch/upload/
Django Version:     2.2
Exception Type:     AttributeError
Exception Value:     'ModelFormWithFileField' object has no attribute 'save'

Exception Location:     /home/user/venv/dev/stockage/arch/views.py in upload_file, line 81
Python Executable:     /home/user/venv/bin/python
Python Version:     3.7.2
Python Path:     
    ['/home/user/venv/dev/stockage',
     '/home/user/venv/lib/python37.zip',
     '/home/user/venv/lib/python3.7',
     '/home/user/venv/lib/python3.7/lib-dynload',
     '/usr/lib/python3.7',
     '/home/user/venv/lib/python3.7/site-packages']

Server time:     mar, 28 Mai 2019 08:14:10 +0200

Pourriez-vous m'aider à finaliser cette fonctionnalité ?

Je vous remercie,

Bonne journée

Dernière modification par wilfrid (28-05-2019 16:31:40)

Hors ligne

Pied de page des forums