#python #django #bootstrap-4
#python #джанго #начальная загрузка-4
Вопрос:
Я создал контактную форму, и когда обработка завершена, она возвращает данные в теге ошибки div вместо тега успешного div.
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.core.mail import send_mail
from django.contrib import messages
from django.core.mail import send_mail
from .models import Contact
def contact(request):
if request.method == 'POST':
name = request.POST['name']
email = request.POST['email']
subject = request.POST['subject']
message = request.POST['message']
contact = Contact(name=name, email=email, subject=subject, message=message)
contact.save()
# Send email
send_mail(
"From e-learning:" subject,
message,
'senderemail@gmail.com',
['receiver1@gmail.com', 'receiver2@gmail.com'],
fail_silently=False
)
send_mail(
"Welcome to e-learning",
"Thank very much for contacting us.We received your enquiry. Our team will contact you as early as possible.",
'senderemail@gmail.com',
[email, 'receiver1@gmail.com'],
fail_silently=False
)
messages.success(request, 'Your request has been submitted, a realtor will get back to you soon')
#return redirect('/listings/' listing_id)
#return redirect('/')
return HttpResponse("Details are submitted")
Шаблон, на который я указал.
<form action="{% url 'contact' %}" method="POST" role="form" class="php-email-form mt-4">
{% csrf_token %}
<div class="form-row">
<div class="col-md-6 form-group">
<input type="text" name="name" class="form-control" id="id_contact_name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
<div class="validate"></div>
</div>
<div class="col-md-6 form-group">
<input type="email" class="form-control" name="email" id="id_contact_email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
<div class="validate"></div>
</div>
</div>
<div class="form-group">
<input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
<div class="validate"></div>
</div>
<div class="form-group">
<textarea class="form-control" name="message" id="id_content" rows="5" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
<div class="validate"></div>
</div>
<div class="mb-3">
<div class="loading">Loading</div>
<div class="error-message"></div>
<div class="sent-message">Your message has been sent. Thank you!</div>
</div>
<div class="text-center"><button type="submit">Send Message</button></div>
</form>
Шаблон начальной загрузки (бесплатная версия) Я использовал.
Все выходные данные, будь то ошибка или успех, поступают в div только с сообщением об ошибке класса вместо отправленного сообщения.
Комментарии:
1. Здравствуйте, не могли бы вы прикрепить фрагмент шаблона, где отображается фактическое сообщение?
2. Фрагмент шаблона уже предоставлен. Вторая часть кода.
Ответ №1:
Ваша форма отправляется из Ajax В выбранной вами бесплатной теме будет папка с именем Forms удалите ее и измените свой код следующим образом
def contact(request):
if request.is_ajax() and request.method == "POST":
contact = Contact()
contact.name = request.POST.get('name')
contact.email = request.POST.get('email')
contact.subject = request.POST.get('subject')
contact.message = request.POST.get('message')
contact.save()
#send email here
return JsonResponse({'massage':"massage"},safe=True)
Комментарии:
1. Спасибо Ankit, но теперь он полностью отображает пустое сообщение. С отображением тега ошибки div
2. Если ошибка отображается неправильно, то проверка в консоли будет там.
3. Нет, нет никакого смысла применять ваш код, вот что я хотел сказать. Ранее он показывал в разделе ошибок каждый вывод. Теперь он ничего не показывает
4. Я тоже прошел через эту проблему и тоже запустил форму.
5. я поделюсь с вами демонстрационным кодом со снимком экрана