首页 > 解决方案 > Django 消息未显示在联系表单模板上

问题描述

我的 Django 站点上有一个联系表。当用户单击提交他们的消息时,我试图弹出一个消息框。出于某种原因,我无法获得我正在创建的要显示的消息。我到处寻找,但似乎找不到解决方案。

我已确保已满足在文档中启用消息的所有步骤。 https://docs.djangoproject.com/en/3.0/ref/contrib/messages/

任何帮助建议将不胜感激!

视图.py

from django.shortcuts import render

# add to the top
from .forms import ContactForm

# new imports that go at the top of the file
from django.core.mail import EmailMessage
from django.shortcuts import redirect
from django.template.loader import get_template
from django.contrib import messages
import global_admin

nickname = global_admin.nickname

# our view
def contact(request):
    form_class = ContactForm

    # new logic!
    if request.method == 'POST':
        form = form_class(data=request.POST)

        if form.is_valid():
            contact_name = request.POST.get(
                'contact_name'
            , '')
            contact_email = request.POST.get(
                'contact_email'
            , '')
            form_content = request.POST.get('content', '')

            # Email the profile with the
            # contact information
            template = get_template('contact/contact_template.txt')
            context = {
                'contact_name': contact_name,
                'contact_email': contact_email,
                'form_content': form_content,
            }
            content = template.render(context)

            email = EmailMessage(
                "New contact form submission",
                content,
                "email@email.com",
                ['email@email.com'],
                headers={'Reply-To': contact_email }
            )
            email.send()
          


          
    messages.debug(request, 'Thanks for reaching out! We will be in contact soon!','')
    print(messages.get_messages(request))
    return render(request, 'contact/contact.html', {'form': form_class, 'nickname': nickname, 'messages': messages.get_messages(request)})

我的模板,contact.html

{% extends 'homepage/base.html' %}


<!--{% block title %}Contact - {{ block.super }}{% endblock %}-->

<!--this loads all the static items-->
{% load static %}

{% block content %}

{% load crispy_forms_tags %}

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

<div id="contact-div">

    <h1>Contact</h1>
    <form role="form" action="" method="POST" class="bootstrap4">
        {% csrf_token %}
        {{ form|crispy }}
        <button type="submit">Submit</button>
    </form>

</div>



{% endblock %}

标签: pythondjangoformsbootstrap-4django-messages

解决方案


导入views.py

from django.contrib import messages

messages.success(request, "successfully posted")


推荐阅读