Python 发送附件时出现多值错误

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

和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.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中的表单已经是model
EscalationMessage
的模型表单,为什么要执行
escalation\u message.file=EscalationMessage(…)
文件
字段a
文件字段
不应该吗?好的,正如您所说,这是错误的,但我不能使用“escalation\u message.file=request.FILES['file']”这个字段。因为据我所知,处理文件的方式也是错误的,那么,有没有合适的方法来处理它?我需要处理它,因为在此之后,我将发送一封电子邮件,其附件就是此文件。我不明白,你在views.py中的表单已经是model
EscalationMessage
的模型表单,你为什么要升级?message.file=EscalationMessage(…)?
文件
字段a
文件字段
不应该吗?好的,正如您所说,这是错误的,但我不能使用“escalation\u message.file=request.FILES['file']”这个字段。因为据我所知,这也是处理文件的错误方式,所以,有没有正确的方法来处理它?我需要处理它,因为在这之后,我会发送一封电子邮件,其附件就是这个文件。
<form action="" method="post" class="escalation-form" enctype="multipart/form-data">