python - /sendEmail/'file' 处的 MultiValueDictKeyError
问题描述
我正在尝试在我的 Django 项目中通过电子邮件发送附件。但是我遇到了这样的错误。我知道以前问过这个问题,但他们已经快 10 岁了,其中一些甚至没有回答。
我的代码如下:
Django=3.2.7
django-crispy-forms==1.12.0
视图.py
# send email
def sendMail(request):
message = request.POST.get("message", "")
subject = request.POST.get("subject", "")
receivers = request.POST.get("email", "")
email = EmailMessage(subject, message, settings.EMAIL_HOST_USER, [receivers])
email.content_subtype = "html"
file = request.FILES["file"]
#file = request.POST.get("file")
email.attach(file.name, file.read(), file.content_type)
email.send()
return HttpResponse(f"Sent to {receivers}")
表格.py
class EmailForm(forms.Form):
# receivers email
email = forms.EmailField()
subject = forms.CharField(max_length=100)
file = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
message = forms.CharField(widget = forms.Textarea)
模型.py
# for sending email
class EmailReportModel(models.Model):
"""
this model created just for email foreignKey
"""
#receiver_emails = models.ForeignKey(BolgeMailListeleri, on_delete=models.CASCADE, related_name = "receiver_emails")
receiver_emails = models.ManyToManyField(BolgeMailListeleri)
subject = models.CharField(max_length=255, default="")
message = models.TextField()
upload = models.FileField(upload_to='uploads', null=True, blank=True)
#upload = models.Field()
#image1 = forms.Field(label='sample photo', widget = forms.FileInput, required = True )
发送电子邮件.html
{% load crispy_forms_tags %}
<div class="main">
<!-- Create a Form -->
<form method="post" enctype="multipart/form-data">
<!-- Security token by Django -->
{% csrf_token %}
{{ form|crispy }}
<button type="submit">Gönder</button>
</form>
<button onclick="goBack()" class="btn btn-danger">İptal Et</button>
</div>
<script>
function goBack() {
window.history.back();
}
</script>
设置.py
# need an actual email
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = "mygmail@gmail.com"
EMAIL_HOST_PASSWORD = "****"
EMAIL_USE_TLS = True
网址.py
urlpatterns = [
path('sendEmail', sendMail, name='send-email'),
]
解决方案
推荐阅读
- html - 如何在反应中添加 defaultprops 或 value
- laravel-5.4 - 在 laravel5.4 中找不到护照 oauth 令牌路径
- python - 在另一个列表中附加一个列表
- macos - macOS 在哪里跟踪签名的 zip
- symfony-3.4 - 未捕获的 LogicException:缓存必须返回 ClassMetadata 的实例,但得到 1
- c++ - 线交点 - 得到不正确的结果
- php - 将JSON数组转换为String和JSON再次android
- html - 将鼠标悬停在 div 上的纯 CSS 隐藏内容然后显示新文本
- rust - Rust 无法识别切片
- ruby-on-rails - 带有 post 请求和有效负载(json 对象)的 rails link_to