Не удается перенаправить формы на моем сайте и показать сообщение Success в django
Я новичок в Django, Форма принимает ввод от пользователя и сохраняет его в /admin, а также отправляет почту на мой email. Я пытаюсь получить сообщение об успехе после нажатия на Отправить сообщение, но не могу получить сообщение об успехе. Также я хочу, чтобы страница перенаправляла в ту же контактную форму и очищала поля ввода. Спасибо #My Views.py
from django.shortcuts import render
from django.shortcuts import render
from collections import namedtuple
from django.contrib import messages
from django.shortcuts import redirect, render
from django.views.generic import ListView, CreateView, DeleteView, DetailView
from . import models
from . import forms
from django.core.mail import send_mail
from django.conf import settings
from django.http import HttpResponseRedirect
def home(request):
return render(request, 'index.html')
def contact(request):
contact = models.Contact.objects.all()
form = forms.ContactForm()
if request.method == 'POST':
firstname = request.POST['firstname']
lastname = request.POST['lastname']
email = request.POST['email']
phone = request.POST['phone']
message = request.POST['message']
data = {
'firstname': firstname,
'lastname': lastname,
'email': email,
'phone': phone,
'message': message
}
message = '''
The message is sent by: {} {}
Email_id: {}
Phone No: {}
Message: {}
'''.format(data['firstname'], data['lastname'], data['email'], data['phone'], data['message'])
send_mail(data['email'], message, '', ['bbchanna@gmail.com'])
form = forms.ContactForm(request.POST)
if form.is_valid():
form.save()
form = forms.ContactForm()
return render(request, 'contact.html', {'form': form, "success": True})
else:
raise NotImplementedError
context = {'form': form}
return render(request, 'contact.html', context)
'''
Моя HTML-страница
'''<div class="contact-form">
{% if success %}
<div role="alert">Your Message is sent Successfully</div>
{% endif %}
<form action="#" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div>
{{ form.firstname }}
{{ form.lastname }}
</div>
<div>
{{ form.email }}
{{ form.phone }}
</div>
<div>
{{ form.message }}
</div>
<button class="Send.btn" type="submit">Send message</button>
</form>'''
#My forms.py
from django import forms
from . import models
class ContactForm(forms.ModelForm):
firstname = forms.CharField(max_length=264, widget=forms.TextInput(
attrs={'placeholder': 'First Name', 'class': 'form-control'}))
lastname = forms.CharField(max_length=264, widget=forms.TextInput(
attrs={'placeholder': 'Last Name', 'class': 'form-control'}))
email = forms.CharField(max_length=264, widget=forms.TextInput(
attrs={'placeholder': 'Email', 'class': 'form-control'}))
phone = forms.CharField(max_length=264, widget=forms.TextInput(
attrs={'placeholder': 'Phone', 'class': 'form-control'}))
message = forms.CharField(max_length=264, widget=forms.Textarea(
attrs={"rows": 5, "cols": 20, 'placeholder': 'Write your message', 'class': 'form-
control'}))
class Meta:
fields = ('firstname', 'lastname', 'email', 'phone', 'message')
model = models.Contact
#My Urls.py
from django.urls import path
from django.conf.urls import url
from django.urls.resolvers import URLPattern
from . import views
app_name = 'mysite'
urlpatterns = [
path('', views.home),
path('contact/', views.contact, name='contact'),
]
Для того, чтобы получить сообщение об успешной отправке формы, вам сначала нужно импортировать сообщения django, например так:
from django.contrib import messages
form = forms.ContactForm(request.POST)
if form.is_valid():
form.save()
form = forms.ContactForm()
messages.info(request,'Form was successfully saved')
return render(request, 'contact.html', {'form': form})
Затем создайте файл messages.html и сохраните его в шаблонах контактов, чтобы иметь уведомления об успешно отправленной форме с фронтенда.
{% if messages %}
<style type="tect/css">
div.messages{
background-color: #ff6b6b;
color: #ff6ff7;
}
ul.messages{
list-style-type: none;
}
</style>
<div class="messages">
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class="{{message.tags}}"{% endif %} >{% if 'html_safe' in message.tags %}
{{message|safe}}{% else %}{{message}}{% endif %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}