2017-06-20 8 views
0

フッターの各ページの下部に表示される連絡フォームがあります。私は単にそれを私のbase.htmlの底に入れました。今私はそれを提出する方法を把握したい。 wagtailが提供するすべての例は、私がそれ専用のページ全体を持っていることを前提としているので、それ自身に送信します。Django Wagtail 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に追加する必要があります

フッタの周りにtemplatetagsを使っていくつかの文脈を提供するだけで、そこにこれを置くだけで価値が得られます。

下記を参照してください。

@register.inclusion_tag('home/menus/footer.html', takes_context=True) 
def footers(context): 
    return { 
     'footers': Footers.objects.first(), 
     'request': context['request'], 
    } 
+0

もしあなたがページモデルを継承していなければ、実際に何をしようとしているのかに関するWagtail特有のものはないので、Wagtailのドキュメントはこれをカバーしません。あなたはプレーンなDjangoビュー。 Djangoのビューの作成に慣れていない場合は、ここから始めてください:https://docs.djangoproject.com/en/1.11/intro/tutorial01/ – gasman

+0

Wagtail自体でより良い方法がありますか? – sqwale

+0

いいえ、おそらくそうではありません。Wagtailは、Djangoのフィーチャセットと一緒に動作するように設計されています。その上にレイヤーではありません。 Djangoが非常に優れていることはたくさんあり、フォームの提出を処理してデータベースに入れることはその1つです...そのような場合、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です。クラスにはCamelCaseを使用してください。詳細については、PEP8を参照してください。

0

自分で構築するのではなく、すでに存在するWagtailのフォームビルダーを見てみましょう。

このフォームを使用すると、カスタムフォームを表示したり、結果をEメールで送信したりすることができます。

Check out the documentation here

関連する問題