Python2.7-访问Django中的Javascript文件对象

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

我正在使用jQuery和Django 1.9构建一个应用程序,它可以将多个文件作为电子邮件附件发送

我将文件存储在用户可以添加和删除的缓冲区中,并通过POST Ajax请求发送它们,如下所示:

            //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编辑了内容。