2014-03-04 180 views
0

我試圖從Python客戶端上傳一些文件到Django網絡應用程序。將文件從Python客戶端上傳到Django服務器

我可以通過使用表單來完成,但我不知道如何使用獨立的Python應用程序來完成它。你能給我一些建議嗎?

我建模文件在Django模型是這樣的:

class Media(models.Model): 
    post = models.ForeignKey(Post) 
    name = models.CharField(max_length=50, blank=False,null=False) 
    mediafile = models.FileField(upload_to=media_file_name, blank=False,null=False) 

乾杯。

回答

0

它實際上是工作,現在使用Python的請求模塊

生病把代碼爲所有感興趣...

Django的服務器...

urls.py

... 
url(r'^list/$', 'dataports.views.list', name='list'), 
... 

views.py

@csrf_exempt 
def list(request): 
    # Handle file upload 
    if request.method == 'POST': 
     print "upload file----------------------------------------------" 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      print "otra vez.. es valido" 
      print request.FILES 

      newdoc = Jobpart(
           partfile = request.FILES['docfile'] 
      ) 
      newdoc.save() 

      # Redirect to the document list after POST 
      return HttpResponseRedirect(reverse('dataports.views.list')) 
    else: 
     #print "nooooupload file----------------------------------------------" 
     form = DocumentForm() # A empty, unbound form 


    # Render list page with the documents and the form 
    return render_to_response(
     'data_templates/list.html', 
     {'form': form}, 
     context_instance=RequestContext(request) 
    ) 

list.html

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Minimal Django File Upload Example</title> 
    </head> 

    <body> 
     <!-- Upload form. Note enctype attribute! --> 
     <form action="{% url "list" %}" method="post" enctype="multipart/form-data"> 
      <p> 
       {{ form.docfile }} 
      </p> 
      <p><input type="submit" value="Upload" /></p> 
     </form> 

    </body> 

</html> 

現在在客戶端。

client.py

import requests 
url = "http://localhost:8000/list/" 
response = requests.post(url,files={'docfile': open('test.txt','rb')}) 

現在你可以添加一些安全和東西。但它其實是一個很簡單的例子..

謝謝大家!!!!

2

你想要做的是發送一個POST請求給Django應用程序發送一個文件。

您可以使用Python的標準庫httplib module或第三方requests module。那最後一個環節,張貼展示瞭如何發佈編碼文件這可能是你所需要的文件上傳。

希望這會有所幫助!

1

使用requests

with open('file') as f: 
    requests.post('http://some.url/upload', data=f) 
相關問題