django 按钮点击电子邮件发送

时间:2021-01-08 06:46:26

标签: html jquery django

我是 Django 的初学者。我想在单击按钮时发送电子邮件。按钮是删除按钮。当按下删除按钮时,我想发送一封电子邮件到receiver@gmail.com。 根据以下代码,页面加载时发送电子邮件。还有一个内部服务器错误。你能帮我更改点击按钮时发送的电子邮件吗。

views.py

class delete_profile(View):
    print("nothing")

    def post(self, request, *args, **kwargs):
        print("nothing")
        template = loader.get_template("frontend/subscription-start.html")
        email_content = "deletion confirmation"
        send_mail(
            'No Dowry Marriage - Subscription',
            email_content,
            'sender@gmail.com',
            ['reciever@gmail.com'],
            html_message=email_content,
            fail_silently=False
        )

urls.py

path('delete_profile', csrf_exempt(delete_profile.as_view()), name='delete_profile')

user_profile.html

<script>
        function delete_profile1() {
            var csrftoken = getCookie('csrftoken');
            console.log("rhgrjhrj")
            $.ajax({
                type: 'POST',
                url: '{% url "delete_profile" %}',
                data: {
                    csrfmiddlewaretoken: csrftoken
                },
                success: function () {
                    toastr.info('Preference Updated Successfully')

                    }
                });
            }

</script>

提前致谢!!!!

1 个答案:

答案 0 :(得分:0)

首先在 views.py 中导入 JsonResponserender

from django.http import JsonResponse
from django.shortcuts import render

更改课程后:

class delete_profile(View):
    
    def get(self, request, *args, **kwargs):
        # handle the get request
        return render(request, 'frontend/subscription-start.html')

    def post(self, request, *args, **kwargs):
        email_content = "deletion confirmation"
        send_mail(
            'No Dowry Marriage - Subscription',
            email_content,
            'sender@gmail.com',
            ['reciever@gmail.com'],
            html_message=email_content,
            fail_silently=False
        )
        return JsonResponse({'some_text': some_text})
        # or
        # return render(request, 'some_location/some_html_file')

也许更改您的 ajax POST 请求标头:

headers: {
    'X-CSRFToken': csrftoken
}