wagtailforms
モジュールは、特定のURLのページツリーのどこかにページとして存在するフォームの考え方を基にして設計されているため、スニペットが役に立ちません。フォーム自体が特にいずれのページにも掲載されていない場合でも、フォームのURLを明確に定義しておく必要があります。スニペットにはURLがありません。
Wagtail管理者のフォームフィールドを定義する必要がない場合は、プレーンなDjangoフォーム(プレーンなDjangoビューへの投稿)が最も簡単なルートです。
from django import template
register = template.Library()
@register.inclusion_tag('myapp/tags/contact_form.html')
def contact_form():
form = ContactForm()
return {'form': form}
その後、テンプレート内、{% load myapp_tags %}
と{% contact_form %}
: - すべてのページにそのフォームオブジェクトを使用できるようにするために、私は、カスタムinclusion tagを定義することをお勧めしたいmyappに/ templatetags/myapp_tags.pyで、次があります。
Wagtailの管理者でフォームを設定したい場合は、フォームページモデルで提供されるget_form
メソッドを利用して、上記の方法とwagtailforms
モジュールの組み合わせを使用できます。最初に、サイトのどこかにwagtailforms
を使用してフォームページを設定します。実際にページが表示されることがあります(ただし、公開する必要があります。のURLに存在する必要があります)。その後、封入タグコードは次のようになります。
@register.inclusion_tag('myapp/tags/contact_form.html')
def contact_form():
form_page = ContactFormPage.objects.get(slug='contact-us')
form = form_page.get_form()
return {'form_page': form_page, 'form': form}
(それはあなたが設定したフォームページに投稿するようcontact_form.htmlの中で、あなたがフォームのaction
属性として{% pageurl form_page %}
を使用します。)
これは働いていましたしかし、私のフォームは何らかの理由でロードされていません。残りのテンプレートは機能しますが、途中にはフォームはありません。私は別の質問を投稿します。ご協力いただきありがとうございます。 – Kim