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'], 
    } 
+0

如果你不是从Page模型继承的,那么关于你想要做什么的事情没有任何特定的W tail,所以W documentation文档不会涵盖这个 - 你只是写了一个普通的Django视图。如果你对编写Django视图不熟悉,请从这里开始:https://docs.djangoproject.com/en/1.11/intro/tutorial01/ – gasman

+0

有没有更好的方式来处理W itself本身? – sqwale

+0

不,可能不是。W is目的是与Django的功能集一起工作,而不是成为其上的一层。 Django很擅长处理表单提交并将它们放入数据库中,其中之一就是其中之一......在这些情况下,直接与Django合作绝对是正确的选择。 – gasman

您应该使用{% 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,您可以在其上显示自定义表格,甚至通过电子邮件发送结果。

Check out the documentation here