2016-04-10 30 views
0

我想从没有模型的表单上传图像。 我试图做:没有模型的django表单

在模板: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> 

在的意见,我有:

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") 

的错误是:不允许的方法(POST) :/ FR /检测/

我的网址:

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})) 

更新:

在urls.py

,我说:

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

新的错误:MultiValueDictKeyError:

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

“ 'MYFILE'”

+0

我觉得这个问题似乎是身份验证问题。像CORS或csrf问题或简单的URL没有斜线。您可以在urls.py – AceLearn

+0

中显示网址另外,form标签中的action属性没有url。 – AceLearn

+0

我应该怎么做? – Lilia

回答

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

请在网址中添加网址(下方)。

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

和HTML,添加动作网址

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

我很抱歉我的知识缺乏,现在我有这个错误:handle_uploaded_file(request.FILES ['myfile'])#错误在这里抛出。 – Lilia

+0

错误是什么? – AceLearn

+0

MultiValueDictKeyError:“'myfile'” – Lilia