Python2.7-访问Django中的Javascript文件对象
我正在使用jQuery和Django 1.9构建一个应用程序,它可以将多个文件作为电子邮件附件发送 我将文件存储在用户可以添加和删除的缓冲区中,并通过POST Ajax请求发送它们,如下所示:Python2.7-访问Django中的Javascript文件对象,javascript,jquery,python,django,Javascript,Jquery,Python,Django,我正在使用jQuery和Django 1.9构建一个应用程序,它可以将多个文件作为电子邮件附件发送 我将文件存储在用户可以添加和删除的缓冲区中,并通过POST Ajax请求发送它们,如下所示: //Build the message message_buffer.forEach(function(entry){ body += '\n' + entry; }); va
//Build the message
message_buffer.forEach(function(entry){
body += '\n' + entry;
});
var files = $.merge(attachment_buffer.photos, attachment_buffer.documents);
var form = new FormData();
form.append("csrfmiddlewaretoken", csrf_token);
form.append("client_id", client_id);
form.append("subject", subject);
form.append("body", body);
form.append("files", files);
$.ajax({
url: window.location.origin + '/dashboard/ajax/send_message',
method: "post",
data: form,
processData: false,
contentType: false,
cache: false,
beforeSend: function(){
//Block UI
},
success: function(data){
if(data.status == 'success'){
console.log(data);
//Show success and clear all the data stores.
} else {
console.log(data.message);
}
},
error: function(err){
console.log(err.responseText);
}
});
问题是,当我在django视图中得到这个缓冲区(JS文件对象的列表)时,它们是以unicode的形式得到的,我不知道如何解析它们
我需要能够像这样将文件附加到django EmailMessage实例:
for attachment in attachments:
mail.attach(attachment.name, attachment.read(), attachment.content_type)
Django视图代码为:
if request.method == "POST":
client_id = request.POST['client_id']
subject = request.POST['subject']
body = request.POST['body']
attachments = []
if 'files' in request.POST.keys() and request.POST['files'] != '':
attachments = request.POST['files']
client = Client.get_client_by_id(request.user, client_id)
if client:
email_helper = EmailHelper()
email_sent = email_helper.send_email_with_attachments(request, client, subject, body, attachments)
以及电子邮件方式:
def send_email_with_attachments(self, request, client, subject, message, attachments, from_email=settings.EMAIL_HOST_USER):
"""
Sends a simple text mail with attachments
:param request:
:param client:
:param subject:
:param message:
:param from_email:
:param attachments:
:return:
"""
# print type(encoding.smart_bytes(attachments))
# # for attachment in attachments:
# # print json.loads(attachment)
# #
# return False
try:
mail = EmailMessage(
self.clean_email_params(subject),
self.clean_email_params(message),
self.clean_email_params(from_email),
self.clean_email_params([client.email]),
reply_to=[from_email]
)
for attachment in attachments:
mail.attach(attachment.name, attachment.read(), attachment.content_type)
mail.send()
try:
# Log the sent email
email_log = SentEmailsLog()
email_log.user = request.user
email_log.client = client
email_log.subject = self.clean_email_params(subject)
email_log.content = self.clean_email_params(message)
email_log.to_email = str(self.clean_email_params([client.email]))
email_log.from_email = self.clean_email_params(from_email)
email_log.host_email = settings.EMAIL_HOST_USER
email_log.attachments = 'No'
email_log.save()
except Exception, e:
ErrorLogHelper.log_error(error_message=e, calling_function="EmailHelper.send_email_with_attachments")
return True
except Exception, e:
ErrorLogHelper.log_error(error_message=e, calling_function="EmailHelper.send_email_with_attachments")
return False
请提供建议,谢谢。尝试在
view.py
中显式编码您的请求正文,如下所示:
body = request.POST['body'].encode('utf8')
有问题的是哪一个Python版本?@errata Python 2.7。您是否可以发布处理AJAX数据的Django视图的代码,这会导致错误?@errata编辑了内容。