我有一个联系表单,显示在页脚的每个页面的底部。我只是将它包含在我底部的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'],
}
答案 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,您可以在其上显示自定义表单,甚至通过电子邮件发送结果。