Django W a ajax联系表
问题描述:
我有一个联系表单,出现在页脚的每个页面的底部。我只是将它包含在底部的base.html中。现在我想找出提交它的方法。所有w provides提供的例子都是假设我有整个页面专用于它,因此提交给自己。Django W a ajax联系表
这对我不起作用,因为它不是页面。
我写了我认为应该看起来像的伪代码。
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,
['[email protected]'],
fail_silently=False,
)
然后我的形式是这样的
<form class="form-group" role="form" method="post" action="/submitContact">
......
</form>
理想的情况下,如果有人可以指向鹡鸰资源,说明如何创建模型的端点不从页面模型继承和不片段维持“请求”内容,这将是有用的。理想情况下,我更喜欢将这些数据记录到联系人“表”中,然后发送电子邮件。
我应该添加到我的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表单。
注意:更喜欢lower_case_with_underscores函数的命名风格。对于类,使用骆驼案例。有关更多信息,请参阅PEP8。
答
为什么不看看已经存在的W Form的Form Builder呢?
它使您能够创建一个FormPage,您可以在其上显示自定义表格,甚至通过电子邮件发送结果。
如果你不是从Page模型继承的,那么关于你想要做什么的事情没有任何特定的W tail,所以W documentation文档不会涵盖这个 - 你只是写了一个普通的Django视图。如果你对编写Django视图不熟悉,请从这里开始:https://docs.djangoproject.com/en/1.11/intro/tutorial01/ – gasman
有没有更好的方式来处理W itself本身? – sqwale
不,可能不是。W is目的是与Django的功能集一起工作,而不是成为其上的一层。 Django很擅长处理表单提交并将它们放入数据库中,其中之一就是其中之一......在这些情况下,直接与Django合作绝对是正确的选择。 – gasman