簡體   English   中英

無法在我的網站中重定向 forms 並在 django 中顯示成功消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM