如何将大量数据发布到Django?

时间:2012-12-15 19:33:26

标签: python ajax django web

我正在尝试将文件列表发送到我的Django网站。每组都使用以下信息进行传输:

  • 文件名,
  • 文件大小,
  • 文件位置,
  • 文件类型

现在,假设我有100个这样的数据集,我想将它发送到我的Django网站,我应该使用哪种方法最好?

PS:我正在考虑使用JSON,然后将JSON数据发布到我的Django URL。数据可能如下所示:

{
  "files": [
    { "filename":"Movie1" , "filesize":"702", "filelocation":"C:/", "filetype":"avi" }, 
    { "filename":"Movie2" , "filesize":"800", "filelocation":"C:/", "filetype":"avi" }, 
    { "filename":"Movie3" , "filesize":"900", "filelocation":"C:/", "filetype":"avi" }
  ]
}

1 个答案:

答案 0 :(得分:3)

我认为将json数据发送到您的服务器是有道理的。现在要实际实现它,您需要服务器接受将用于发送有关文件数据的http POST请求。

因此,服务器代码可能如下所示:

urls.py:

import myapp
#  ...
urlpatterns = patterns('', url(r'^json/$',myapp.serve_json), #http://<site_url>/json/ will accept your post requests, myapp is the app containing view functions
                         #add other urls
                      )
#other code

views.py

import json
def serve_json(request):
    if request.method == 'POST':
        if 'files' in request.POST:
            file_list = json.loads(request.POST['files'])

            for file in file_list:
                #do something with each file dictionary in file_list
                #...
            return HttpResponse("Sample message") #You may return a message 
    raise Http404

现在,在桌面应用程序中,一旦有了文件词典列表,就可以这样做:

import urllib,json
data = urllib.urlencode({'files':json.dumps(file_dict)}) #file_dict has the list of stats about the files
response = urllib.urlopen('http://example.com/json/', data)
print response.read()

您还可以查看urllib2httplib并使用它们代替urllib