2016-04-10 22 views
0

Ich möchte ein Bild von einem Formular ohne Modell hochladen. Ich habe versucht zu machen:django Formen ohne Modell

In der Vorlage: det.html

Upload image 
    <form enctype="multipart/form-data" action="" method="post">{% csrf_token %} 
     <input type="file" name="myfile" id="myfile" /> 
     <input type="submit" value="Upload image"> 
    </form> 

In den Ansichten, die ich habe:

def fileupload(request): 

    return responsewrapper('personne/det.html', locals(),request) 

def handle_uploaded_file(f): 
    filename = file._get_name() 
    destination = open('/personne/static/personne/%s'%filename, 'wb+') 
    for chunk in f.chunks(): 
     destination.write(chunk) 
    destination.close() 

def submitfilecontent(request): 
    handle_uploaded_file(request.FILES['myfile']) 
    return HttpResponseRedirect("/successupload") 

Der Fehler ist: Methode nicht zulässig (POST) :

urlpatterns += i18n_patterns(
    url(r'^admin/', admin.site.urls, name="admin"), 
    url(r'^$', views.IndexView.as_view(), name="homepage"), 
    url(r'^detect/$', views.DetectView.as_view(), name="detection"), 
    url(r'^login/$', auth_views.login, name="login"), 
    url(r'^logout/$', auth_views.logout, name="logout"), 
    url(r'^register/',views.addUser, name='register'), 

)+ i18n_patterns('', (r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root': MEDIA_ROOT, 'show_indexes': True})) 
:/fr//

meine Urls erkennen

Update:

in urls.py, fügte ich hinzu:

url(r'^submitfilecontent/$', submitfilecontent, name="submit-file-content"), 

in der Vorlage:

<form enctype="multipart/form-data" action="/submitfilecontent/" method="post"> 

Der neue Fehler: MultiValueDictKeyError: " 'myfile'"

+0

denke ich, das Problem Authentifizierungsproblem zu sein scheint. etwas wie CORS oder csrf oder eine einfache URL ohne Schrägstrich. Können Sie die URL in urls.py anzeigen – AceLearn

+0

Das Aktionsattribut im Formular-Tag hat auch nicht die URL. – AceLearn

+0

Was soll ich in die Handlung stecken? – Lilia

Antwort

0

Views.py:

def submitfilecontent(request): 
    ext_allowed = ['gif', 'jpg', 'jpeg', 'png'] 
    today = datetime.datetime.today() 
    save_dir = 'personne/static/personne/%d/%d/%d/' % (today.year, today.month, today.day) 
    save_path = os.path.join(settings.MEDIA_ROOT, save_dir) 
    save_url = os.path.join(settings.MEDIA_URL, save_dir) 

    if request.method == 'POST': 
     file = request.FILES['myfile'] 
     ext = file.name.split('.').pop() 
     if not os.path.isdir(save_path): 
      os.makedirs(save_path) 

     new_file = '%s.%s' % (int(time.time()), ext) 

     destination = open(save_path+new_file, 'wb+') 
     for chunk in file.chunks(): 
      destination.write(chunk) 
     destination.close() 
     return HttpResponse("Upload Succsefull to URL:%s" % (save_url+new_file) ) 
    else: 
     raise Http404 
1

Bitte Fügen Sie eine URL (unten) in URLs hinzu.

url(r'^submitfilecontent/$', submitfilecontent, name="submit-file-content"), 

und in HTML, fügen Sie die Aktion url

<form enctype="multipart/form-data" action="/submitfilecontent/" method="post">{% csrf_token %} 
+0

Es tut mir leid für meinen Mangel an Wissen, ich habe jetzt diesen Fehler: handle_uploaded_file (request.FILES ['myfile']) # Fehler wirft hier auf. – Lilia

+0

Was ist der Fehler? – AceLearn

+0

MultiValueDictKeyError: "'myfile'" – Lilia