【发布时间】:2017-11-23 04:30:21
【问题描述】:
我在页脚的每一页底部都有一个联系表单。我只是将它包含在底部的 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 模型并且不是维护有用的“请求”内容的 sn-ps。理想情况下,我希望将这些数据记录到联系人“表”中,然后发送电子邮件。
我应该在我的 urls.py 中添加什么以使用正确的上下文重新路由请求,以便函数检索所需的变量并因此发送电子邮件
其他信息
我在页脚周围包裹了一个 sn-p 以使用模板标签为其提供一些上下文,只是把它放在那里以防它增加价值
见下文。
@register.inclusion_tag('home/menus/footer.html', takes_context=True)
def footers(context):
return {
'footers': Footers.objects.first(),
'request': context['request'],
}
【问题讨论】:
-
如果您没有从 Page 模型继承,那么对于您要执行的操作实际上并没有 Wagtail 特定的内容,因此 Wagtail 文档不会涵盖这一点 - 您只是编写一个普通的 Django 视图。如果您不熟悉编写 Django 视图,请从这里开始:docs.djangoproject.com/en/1.11/intro/tutorial01
-
鹡鸰本身有没有更好的方法?
-
不,可能不是。 Wagtail 旨在与 Django 的功能集一起工作,而不是在它之上的一个层。 Django 擅长的东西有很多,处理表单提交并将它们放入数据库就是其中之一……在这些情况下,直接使用 Django 绝对是正确的做法。