def uploadfilefiles(request):
if request.method == 'GET':
return HttpResponseRedirect('/uploadfilepage/')
fileinfo = json.loads(request.POST['files'])
client = pymongo.MongoClient('localhost', 27017)
db = client.cloudfiledb
filename = fileinfo["flename"]
md5 = fileinfo["_id"]
resu = db[fileinfo['username'] + "fileinfo"].find({"flename": filename})
if resu.count() == 0:
db[fileinfo['username'] + "fileinfo"].insert(fileinfo)
return HttpResponse(json.dumps({"Uploaded": []}))
else:
return HttpResponse(resu)
查询的返回值为:
{u'username': u'mochen', u'chunkSize': 10485760, u'flename': u'hello.txt', u'length': 38, u'uploadDate': 1522581711234L, u'_id': u'-1118858670-142391418912608919631449407476'},
如何在Django中获取某个字段的值,比如在上面的代码else分支中,如何获得resu的username或者其他字段,上面的返回结果是在前端浏览器的开发者工具的response中显示的。
经实验及查看文档发现,find()函数返回的是类型为cursor的值,而find_one()返回的是数组或对象,故要访问返回的文档的某个字段时根据使用的查询函数,若为resu = db.collection.find(),则可通过如下的方式访问:
resu = db[username + "fileinfo"].find()
若是采用的find_one()函数,则可以直接通过字典访问,(如下面的_id获取的方式)
resu = db[fileinfo['username'] + "fileinfo"].find_one({"filename": filename})
上面方法亲测可行。