Python 发送附件时出现多值错误
和handle_上传的_文件完全一样Python 发送附件时出现多值错误,python,django,Python,Django,和handle_上传的_文件完全一样 if request.POST: form = EscalationForm(request.POST, request.FILES) if form.is_valid(): escalation_message = form.save(commit=False) handle_uploaded_file(request.FILES['file']) escalation_message.sav
if request.POST:
form = EscalationForm(request.POST, request.FILES)
if form.is_valid():
escalation_message = form.save(commit=False)
handle_uploaded_file(request.FILES['file'])
escalation_message.save()
EscalationForm.py:
def handle_uploaded_file(f):
with open('some/file/name.txt', 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
我的模型是:
class EscalationForm(forms.ModelForm):
class Meta:
model = EscalationMessage
此外,我将这些添加到我的settings.py中
class EscalationMessage(models.Model):
file = models.FileField(null=True, blank=True, upload_to='.')
然而,当我试图发送附件时,它给出了
FILE_UPLOAD_HANDLERS = [
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler"
]
我是网络开发新手,正在编写一个小型演示。我试图发送带有附件的消息,我搜索了一个示例,但它给出了这个错误。你知道这个错误吗
谢谢文件上传必须使用
POST
方法。将您的表单
标记更改为:
File "/Users/mk/Documents/interaction/views.py", line 169, in create_escalation_message
escalation_message.file = EscalationMessage(file=request.FILES['file'])
File "/Users/mk/Documents/venvs/lib/python2.7/site-packages/django/utils/datastructures.py", line 322, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'file'"
文件上载必须使用
POST
方法。将您的表单
标记更改为:
File "/Users/mk/Documents/interaction/views.py", line 169, in create_escalation_message
escalation_message.file = EscalationMessage(file=request.FILES['file'])
File "/Users/mk/Documents/venvs/lib/python2.7/site-packages/django/utils/datastructures.py", line 322, in __getitem__
raise MultiValueDictKeyError(repr(key))
MultiValueDictKeyError: "'file'"
我不明白,您在views.py中的表单已经是modelEscalationMessage
的模型表单,为什么要执行escalation\u message.file=EscalationMessage(…)
?文件
字段a文件字段
不应该吗?好的,正如您所说,这是错误的,但我不能使用“escalation\u message.file=request.FILES['file']”这个字段。因为据我所知,处理文件的方式也是错误的,那么,有没有合适的方法来处理它?我需要处理它,因为在此之后,我将发送一封电子邮件,其附件就是此文件。我不明白,你在views.py中的表单已经是modelEscalationMessage
的模型表单,你为什么要升级?message.file=EscalationMessage(…)?文件
字段a文件字段
不应该吗?好的,正如您所说,这是错误的,但我不能使用“escalation\u message.file=request.FILES['file']”这个字段。因为据我所知,这也是处理文件的错误方式,所以,有没有正确的方法来处理它?我需要处理它,因为在这之后,我会发送一封电子邮件,其附件就是这个文件。
<form action="" method="post" class="escalation-form" enctype="multipart/form-data">