Es ist unwahrscheinlich, dass ein Snippet hier hilft, weil das Modul wagtailforms
um die Idee des Formulars als eine Seite irgendwo in der Seitenstruktur unter einer bestimmten URL entwickelt wurde. Auch wenn das Formular selbst nicht auf einer bestimmten Seite vorhanden ist, muss es eine eindeutige URL für das Formular geben, auf das gepostet werden soll. Snippets haben keine URLs.
Wenn Sie nicht die Möglichkeit haben, Formularfelder innerhalb des Wagtail-Administrators zu definieren, ist ein einfaches Django-Formular (das zu einer einfachen Django-Ansicht posten) die einfachste Route. Um das zu erreichen Form Objekt auf jeder Seite zur Verfügung, würde ich vorschlagen, eine benutzerdefinierte definieren inclusion tag - in myapp/templatetags/myapp_tags.py, haben die folgenden:
from django import template
register = template.Library()
@register.inclusion_tag('myapp/tags/contact_form.html')
def contact_form():
form = ContactForm()
return {'form': form}
Dann in Ihrer Vorlage, {% load myapp_tags %}
und {% contact_form %}
.
Wenn das Formular im Wagtail-Administrator konfigurierbar sein soll, können Sie eine Kombination aus dem obigen Ansatz und dem wagtailforms
-Modul verwenden, indem Sie die von Formularseitenmodellen bereitgestellte Methode get_form
verwenden. Richten Sie zuerst eine Formularseite unter Verwendung von wagtailforms
irgendwo auf Ihrer Website ein - es kann sich um eine tatsächliche Seite handeln, die von Benutzern erwartet wird (aber sie muss veröffentlicht werden und existiert unter einer URL irgendwo). Dann wird die Aufnahme-Tag-Code:
@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}
(Innerhalb contact_form.html Sie {% pageurl form_page %}
als die action
des Formulars Attribut verwenden würde, so dass es auf die Formularseite postet Sie eingerichtet haben.)
Das funktionierte , aber mein Formular wird aus irgendeinem Grund nicht geladen. Der Rest der Vorlage funktioniert, aber kein Formular in der Mitte. Ich werde eine separate Frage dafür veröffentlichen. Danke für Ihre Hilfe. – Kim