Как отправить электронное письмо, используя django и ajax - PullRequest
0 голосов
/ 01 апреля 2020

Здравствуйте, я работаю над формой контакта Django, которая позволяет пользователю отправить электронное письмо, ранее электронное письмо отправлялось, но страница перезагружалась, поэтому решили использовать ajax

Вот мой javascript код, ajax код

    $('.menu').click(function(){
        $('.toggle').toggleClass('active');
    })
    $(document).on('submit', '#contact_form', function(e){
        e.preventDefault();
        $.ajax({
            type:'POST',
            url:'/contact',
            data:{
                from_email:$('#id_from_email').val(),
                subject:$('#div_id_subject').val(),
                message:$('#div_id_message').val(),
                csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()

            },
            success:function(){
                alert("Message sent succsessfuly")
            }
        })
    })

});

Это мои взгляды, получение данных и отправка электронной почты

    if request.method == 'GET':
        form = ContactForm()
    else:
        form = ContactForm(request.POST or None)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            from_email = form.cleaned_data['from_email']
            message = form.cleaned_data['message']
            reply_to=[from_email]
            msg_mail = str(message) + " " + str(from_email)
            try:
                send_mail(
                    subject,
                    message,
                    from_email,
                    ['kimkidati@gmail.com'],
                    reply_to,
                )
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            messages.add_message(request, messages.SUCCESS, 'Email sent successfully.')
    return render(request, "contact.html", {'form': form,})

Мой шаблон, вот моя форма django, где я собираю сообщение пользователя и электронную почту

        <h1>Contact Us</h1>
        {% if message %}
        {% for message in messages %}
        <p class="text-black mt-5 pt-5">{{message}}</p>
        {% endfor %}
        {% endif %}
        <form id="contact_form"  method="POST" data-url='/contact'>
          {% csrf_token %}
          <p>{{form|crispy}}</p>
          <div class="form-actions mb-5">
               <button class="btn btn-primary btn-sm"  type="submit">Send Message</button>

          </div>
         </form>
      </div> ```

  **Also had an issue with the email which does not specify who the email is from, instead, it says from me**
...