【问题标题】:Django is not returning success to html templateDjango没有向html模板返回成功
【发布时间】:2021-03-10 19:31:50
【问题描述】:

我创建了一个联系表单,处理完成后,它在错误 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>

Bootstrap template(免费版)我用过。

所有的输出,无论是错误还是成功,都会以错误消息类而不是已发送消息的形式进入 div。

【问题讨论】:

  • 您好,能否附上模板片段,显示实际消息的位置?
  • 模板片段已经提供。第二部分代码。

标签: python django bootstrap-4


【解决方案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)

【讨论】:

  • 感谢 Ankit,但现在它完全显示空消息。显示错误 div 标签
  • 如果错误没有正确显示,那么就会在控制台中检查。
  • 不,应用你的代码没有用,这就是我的意思。之前它在错误部分显示每个输出。现在,它什么都不显示
  • 我也遇到过这个问题,我也开始填表了。
  • 我将与您分享一个带有屏幕截图的演示代码
猜你喜欢
  • 2021-07-06
  • 2021-05-27
  • 2017-04-30
  • 1970-01-01
  • 2015-04-14
  • 2014-06-28
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多