简体   繁体   English

Django 在 POST 请求时返回 500

[英]Django returning 500 on POST request

So, I have this simple contact form, which Django handles by sending e-mails to me and to the person who contacted us.所以,我有这个简单的联系表,Django 通过向我和联系我们的人发送电子邮件来处理它。 I've written an AJAX funcion to handle it.我已经编写了一个 AJAX 函数来处理它。 The only thing is that, no matter what I try, I keep getting an 500 status.唯一的问题是,无论我尝试什么,我都会获得 500 的状态。

My Django (1.11) code:我的 Django (1.11) 代码:

def contato(request):
    if request.method == 'POST':
        name = request.POST['name']
        email = request.POST['email']
        phone = request.POST['phone']
        message = request.POST['message']
        newmessage = "Mensagem recebida de {}.\nTelefone: {}\ne-mail {}\n {}".format(name, phone, email, message)
        send_mail(
            'Nova mensagem pelo site',
            newmessage,
            'PLACEHOLDER@EMAIL',
            ['PLACEHOLDER@EMAIL'],
            fail_silently=False
        )
        send_mail(
            'Recebemos sua mensagem!',
            'Olá, {}!\nRecebemos sua mensagem e entraremos em contato em breve.'.format(name),
            'PLACEHOLDER@EMAIL',
            [email],
            fail_silently=False
        )
        return HttpResponse()

And here's my AJAX request:这是我的 AJAX 请求:

form.addEventListener("submit", function(event) {
    event.preventDefault();
    let dadoscontato = {
        name: name.value,
        email: email.value,
        phone: phone.value,
        message: message.value,
        csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value
    };

    fetch('/contato/', {
        method: 'POST',
        credentials: 'same-origin',
        headers: {
            "X-CSRFToken": getCookie("csrftoken"),
            "Accept": "application/json",
            "Content-Type": "application/json"
        },
        body: JSON.stringify(dadoscontato),
    })
    .then(function(response){
        console.log(response)
        return response.json();
    })
    .then(function(response){
        alert('Mensagem enviada com sucesso!');
    });
});

Just to mark this question as solved:只是为了将此问题标记为已解决:

I had to run a .decode() while loading the response.我必须在加载响应时运行.decode() Everything works fine now.现在一切正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM