[英]Not able to redirect the forms in my website and show Success message in 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>'''
#我的 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
#我的網址.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 %}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.