Ich entwickle eine Anwendung mit Django zum Hochladen einer Datei auf dem Server. Ich habe ein Formular und ein Modell in forms.py und models.py Dateien separat als unten (jeweils) definiert:Hochladen einer Datei mit Django
from django import forms
class DocumentForm(forms.Form):
docfile = forms.FileField(
label=''
)
und in models.py:
from django.db import models
# Create your models here.
class Document(models.Model):
docfile = models.FileField(upload_to='targetdir')
in meiner HTML-Datei und meine Form:
<form class="myclass" action="submit" method="post">
{% csrf_token %}
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
</p>
<br />
<input font-size="50px" style="zoom:1.5" class="myclass" dir="rtl" type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" />
jetzt, wenn ich meine Form einreichen und ich möchte über unter Codes meine hochgeladene Datei auf dem Server erhalten, bekam ich "
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'docfile'""
Fehler. meine views.py Datei:
def pythonhandler(request):
if request.method == 'POST':
try:
data = request.FILES.get('docfile')
with open(os.getcwd()+'/mydirectory/'+request.FILES['docfile'].name, 'wb+') as destination:
for chunk in request.FILES['docfile'].chunks():
destination.write(chunk)
Ich habe die genannten Schritte in this, this und this Frage, aber ich erhalte diesen Fehler wieder!
Bitte können Sie etwas konkreter über Ihr HTML-Formular und views.py? Haben Sie Folgendes gelesen: https://docs.djangoproject.com/en/1.11/topics/http/file-uploads/? Vielleicht könnte es nützlich sein. –
Ich habe meine Frage bearbeitet. Ich habe Ihren erwähnten Link gelesen und alles, was ich denke, ist ein Beispiel. aber ich habe keine Ahnung von dem Fehler. – Stateless
Beachten Sie, dass request.FILES nur Daten enthält, wenn die Anforderungsmethode POST ist und die