Django Wagtail ajax联系表

时间:2017-06-20 14:46:12

标签: html ajax django wagtail

我有一个联系表单,显示在页脚的每个页面的底部。我只是将它包含在我底部的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>

理想情况下,如果有人可以指向Wagtail资源,该资源显示如何在不从Page模型继承的模型中创建端点,而不是保留“请求”内容的片段。理想情况下,我更喜欢将此数据记录到联系人“table”,然后发送电子邮件。

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

其他信息

我在页脚周围包了一个片段,使用templatetags为它提供一些上下文,只是把它放在那里,因为它增加了价值

见下文。

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

2 个答案:

答案 0 :(得分:2)

您应该使用{% 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

答案 1 :(得分:0)

为什么不看一下已经存在的Wagtail表单生成器呢?

不是试图自己构建它?

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

Check out the documentation here