在我的django应用程序中,我收到了一个JSON请求,如下所示:
{
"item1": false,
"item2": false,
"item3": "value",
"url": "http://downloadlink.example.net"
}
我必须保存除url之外的所有数据,我只需要下载文本文件并将其保存在服务器上。我该怎么做下载部分?
代码在视图中:
class Collect(View):
@csrf_exempt
def dispatch(self, request, *args, **kwargs):
return super(Collect, self).dispatch(request, *args, **kwargs)
def post(self, request):
data = json.loads(request.body.decode())
try:
item1 = data["item1"]
item2 = data["item2"]
item3 = data["item3"]
url = data["url"]
new_row = ModelName(
item1=item1,
item2=item2,
item3=item3,
)
new_row.save()
except Error:
return HttpResponse("Unable to save")
return HttpResponse("Saved")
所以基本上你可以使用urllib库,特别是它的urlretrieve函数首先将文件保存在temp文件夹中,然后你可以将它保存在你想要的任何地方。
import urllib
response = urllib.urlretrieve(url)
contents = open(response[0]).read()
f = open('filename.ext','w')
f.write(contents)
f.close()
这是如何从链接保存文件的基本示例。保存文件时,应包括完整路径,因此请确保在设置文件中创建BASE_DIR常量。您可以进一步在db中创建FileField或ImageField表,阅读here以获取更多示例。