2017-06-20 62 views
0

我有一個聯繫表單,出現在頁腳的每個頁面的底部。我只是將它包含在底部的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

回答

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表單。

注意:更喜歡lower_case_with_underscores函數的命名風格。對於類,使用駱駝案例。有關更多信息,請參閱PEP8

0

爲什麼不看看已經存在的W Form的Form Builder呢?

它使您能夠創建一個FormPage,您可以在其上顯示自定義表格,甚至通過電子郵件發送結果。

Check out the documentation here