Отправка письма от модала в Джанго - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь создать простую контактную форму в модальном окне и отправить электронную почту на консоль в начале, но она не работает. У меня все установлено.

У меня настроен бэкэнд электронной почты, так как я могу отправить письмо с консоли. При открытии модального сайта URL сайта не меняется. Это как-то связано с этим?

Это то, что я получаю в консоли

[02/Jul/2019 22:30:22] "GET /contact/ HTTP/1.1" 200 1224

[02/Jul/2019 22:30:29] "POST / HTTP/1.1" 200 2229

views.py

def email(request):
    if request.method == "POST":
        form = ContactForm(request.POST)
        if form.is_valid():
            mail = form.cleaned_data["from_email"]
            subject = form.cleaned_data["subject"]
            message = form.cleaned_data["message"]
            send_mail(subject, message, mail, ["example@gmail.com"], fail_silently=False)
            messages.success("Done")
            return redirect("homepage")
    else:
        form = ContactForm()
    return render(request, "home_page/contact_form.html", {"form": form})

forms.py

class ContactForm(forms.Form):
    from_email = forms.EmailField(required=True)
    subject = forms.CharField(required=True)
    message = forms.CharField(widget=forms.Textarea)

urls.py

urlpatterns = [
    path('', views.home, name='homepage'),
    path('contact/', views.email, name='contact')]

И HTML

{% load crispy_forms_tags %}
<h1>Leave me a message</h1>
<form method="post" action="">
    {% csrf_token %}
    {{ form|crispy }}
    <div class="form-actions">
      <button>Send</button>
    </div>
</form>

Редактировать

Добавление кода, отвечающего за открытие модала: home.html

<a href="{% url 'contact' %}" rel="modal:open"><i class="far fa-envelope fa-3x"></i></a>

Изменено действие в моей контактной форме, но это не отправка электронного письма и открытие контактной формы на новой странице

action="{% url 'contact' %}"
[03/Jul/2019 06:31:30] "GET /contact/ HTTP/1.1" 200 1233
[03/Jul/2019 06:31:37] "POST /contact/ HTTP/1.1" 200 1372

1 Ответ

0 голосов
/ 03 июля 2019

Похоже, что ваша форма направлена ​​на домашнюю страницу, а не на электронную почту.Попробуйте изменить action="" на action="/contact/" или для более правильного способа django, action="{% url 'contact' %}".

ОБНОВЛЕНИЕ: Если представление получает запрос POST и отправляет обратно 200, значит, существует проблема с кодом.Попробуйте добавить 'else' в `if form.is_valid () '.Теперь похоже, что форма не проверяется.

...