我有一个简单的视图,它接收用户的文件。我已经用我的浏览器对它进行了测试,它运行正常。
另一方面,我有一个python并对requestb.in进行了测试,我可以看到multipart / form-data和一个http响应代码200.所以,我的接收和存储文件的视图和脚本都在上传多部分数据工作正常。
我的问题是:当我使用我的脚本将文件上传到视图时,即使我收到http状态代码200,我看到在使用的情况下磁盘上没有存储任何文件我做的浏览器。你会想到什么问题?这是我的模型,视图和脚本:
models.py:
class FileUploads(models.Model):
uploads = models.FileField()
forms.py:
from django import forms
from .models import FileUploads
class UserProfileForm(forms.ModelForm):
class Meta:
model = FileUploads
fields = ['uploads']
views.py:
@csrf_exempt
def upper(request):
form = UserProfileForm(request.POST or None, request.FILES or None)
context = {'title': 'welcome', 'form': form}
if form.is_valid():
form.save()
context = {'form': form, 'title': 'thanks'}'
return render(request, 'upform.html', context)
Python脚本up.py:
import requests
f = open('C:\\Users\\Amir\\Desktop\\snow.jpg', 'rb')
urls='http://127.0.0.1:8000/upper'
r=requests.post(urls, files= {'a':f})
print(r.status_code)
答案 0 :(得分:1)
应该是:
import requests
f = open('C:\\Users\\Amir\\Desktop\\snow.jpg', 'rb')
urls='http://127.0.0.1:8000/upper'
r=requests.post(urls, files= {'uploads':f})
print(r.status_code)
...传递给requests.post
的字典中的文件名需要与Django表单中的字段名匹配:)