Django Wagtail ajax 联系表

Django Wagtail ajax contact form

我有一个联系表,它出现在每页底部的页脚中。我只是将它包含在底部的 base.html 中。现在我想弄清楚提交它的方法。 wagtail 提供的所有示例都假设我有一个专门用于它的整个页面,因此提交给它自己。

这对我不起作用,因为它不是一个页面。

我已经编写了我认为应该是什么样子的伪代码。

def submitContact(request): 
        source_email = request.POST.get('email')
        name = request.POST.get('name')
        message = request.POST.get('message')           
        if (source_email is not None) and (name is not None) and (message is not None):
            body = "sample"
            send_mail(
                name,
                message,
                source_email,
                ['test@foobar'],
                fail_silently=False,
            )

那么我的表格就是这样的

<form class="form-group" role="form" method="post" action="/submitContact">
 ......
</form>

理想情况下,如果有人可以指向显示如何在不从页面模型继承的模型中创建端点并且不是维护 "request" 内容的片段的 Wagtail 资源,那将很有用。理想情况下,我更喜欢将此数据记录到联系人 "table" 中,然后再发送电子邮件。

我应该在我的 urls.py 中添加什么,以便使用正确的上下文重新路由请求,以便函数检索所需的变量,从而发送电子邮件

附加信息

我在页脚周围包裹了一个片段,以使用模板标签为其提供一些上下文,只是把它放在那里以防它增加价值

见下文。

@register.inclusion_tag('home/menus/footer.html', takes_context=True)
def footers(context):
    return {
        'footers': Footers.objects.first(),
        'request': context['request'],
    }

您应该使用 {% url %} 模板标签。

urls.py :

from django.conf.urls import url
from yourapp.views import submitContact

urlpatterns = [
    url(r'^contact/$', submitContact, name='contact'),
]

模板:

<form class="form-group" role="form" method="post" action="{% url 'contact' %}">
 ......
</form>

另一个改进是使用 Django Form。

注意:更喜欢 lower_case_with_underscores 函数的命名风格。 类 使用 CamelCase。有关详细信息,请参阅 PEP8

与其尝试自己构建它,不如看看已经存在的 Wagtail Form Builder?

它使您能够创建一个 FormPage,您可以在该页面上显示自定义表单,甚至可以通过电子邮件发送结果。

Check out the documentation here.