Django Send Mail продолжает выбрасывать ошибку WSGI
У меня есть приложение, в котором, когда пользователь заполняет форму, я получаю электронное письмо с его данными, чтобы я мог связаться с ним. Но когда форма отправляется, она выдает ошибку
Я не смог найти ошибку в коде. Все учетные данные на месте. Я использую smtp-сервер SendingBlue для этого проекта. Взгляните на мой код:
views.py
from django.shortcuts import render, redirect
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
# Create your views here.
def home(request):
return render(request, 'index.html')
def register(request):
if request.method == 'GET':
return render(request, 'register.html')
else:
name = request.POST['full-name']
email = request.POST['email']
phone = request.POST['phone']
nationality = request.POST['nationality']
try:
send_mail("Trial Application", name + email + phone + nationality, '*my email*', ['* same email*'])
except BadHeaderError:
return HttpResponse('Something Went Wrong')
return redirect(request, 'index.html')
return render(request, 'register.html')
settings.py
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp-relay.sendinblue.com"
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = "*my email*"
EMAIL_HOST_PASSWORD = "password"
register.html
<form action="" method="post" class="form">
{% csrf_token %}
<fieldset>
<legend>Please fill in the required details</legend>
<input type="text" name="full-name" placeholder="Full Name" id="">
<input type="email" name="email" placeholder="Email" id="">
<input type="tel" name="phone" placeholder="Phone Number" id="">
<input type="text" name="nationality" placeholder="Nationality" id="">
<input type="submit" value="Submit" id="submit">
</fieldset>
</form>
Буду очень признателен, если кто-нибудь поможет мне устранить эту ошибку. Заранее спасибо.
Ошибка, которую вы испытываете, связана не с функцией send_mail, а с тем, что Django не может найти URL: '/apply/'. Действие, которое вы указываете в HTML форме, не присутствует в urls.py. Пожалуйста, убедитесь, что действие соответствует шаблонам URL вашего django.
например:
<!--If this is your form tag:-->
<form method=post>
вам нужно добавить к нему действие, которое должно соответствовать отображению URL в вашем django urls.py вот так:
<form method=post action="/register/account">
действие приведет форму на этот URL после нажатия кнопки submit: http://localhost/register/account
Таким образом, в urls.py вы должны иметь шаблон соответствия типа:
urlpatterns = [
path('register/account', views.register, name='register')
]
