2017-06-20 2 views
0

Ich habe ein Kontaktformular, das am Ende jeder Seite in der Fußzeile erscheint. Ich habe es einfach in meine base.html unten eingefügt. Jetzt möchte ich einen Weg finden, es einzureichen. Alle Beispiele, die Bachstelzen liefern, gehen von der Annahme aus, dass ich ihr eine ganze Seite widme und daher sich selbst unterwerfe.Django Wagtail Ajax Kontaktformular

Dies kann nicht für mich arbeiten, da es keine Seite ist.

Ich habe Pseudo-Code geschrieben, von dem ich denke, dass es so aussehen sollte.

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, 
      ) 

Dann würde meine Form so etwas wie dieses

<form class="form-group" role="form" method="post" action="/submitContact"> 
...... 
</form> 

Im Idealfall, wenn jemand Bachstelze Ressourcen zeigen könnte, die zeigen, wie Endpunkte in Modelle erstellen, die von der Seite Modell nicht nicht Schnipsel erben und sind die "Request" Inhalte beibehalten, die nützlich wären. Idealerweise würde ich es vorziehen, diese Daten in Kontakt "Tabelle" zu protokollieren und dann die E-Mail zu senden.

Was soll ich zu meinem urls.py fügen Sie die Anfrage mit dem richtigen Kontext für die Funktion zum Umleiten der erforderlichen Variablen abrufen und damit die E-Mail

Zusatzinfo

ich einen Ausschnitt gewickelt um die Fußzeile zu stellen, um einen Kontext zu geben, der templatetags verwendet, nur dieses da draußen hinstellend, wenn es Wert hinzufügt

Sehen Sie unten.

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

Wenn Sie nicht vom Page-Modell geerbt haben, dann gibt es wirklich keine Wagtail-spezifische Informationen zu dem, was Sie zu tun versuchen. Die Wagtail-Dokumentation deckt das nicht ab - Sie schreiben nur eine einfache Django-Ansicht . Wenn Sie mit dem Schreiben von Django-Ansichten nicht vertraut sind, beginnen Sie hier: https://docs.djangoproject.com/de/1.11/intro/tutorial01/ – gasman

+0

Gibt es einen besseren Weg, es mit Bachstelze selbst zu tun? – sqwale

+0

Nein, wahrscheinlich nicht.Wagtail wurde entwickelt, um mit Djangos Feature-Set zusammen zu arbeiten, und nicht um eine Ebene darüber zu sein. Es gibt viele Dinge, bei denen Django sehr gut ist, und das Bearbeiten von Einsendungen und das Eintragen in eine Datenbank ist einer von ihnen ... in diesen Fällen ist die Arbeit direkt mit Django absolut richtig. – gasman

Antwort

2

Sie sollten {% url %} Vorlage Tag verwenden.

urls.py:

from django.conf.urls import url 
from yourapp.views import submitContact 

urlpatterns = [ 
    url(r'^contact/$', submitContact, name='contact'), 
] 

Vorlage:

<form class="form-group" role="form" method="post" action="{% url 'contact' %}"> 
...... 
</form> 

Eine weitere Verbesserung ist Django-Formular zu verwenden.

Hinweis: bevorzugen Sie lower_case_with_undscores Benennungsstil für Funktionen. Verwenden Sie CamelCase für Klassen. Weitere Informationen finden Sie unter PEP8.

0

Anstatt zu versuchen, es selbst zu bauen, warum nicht einen Blick auf den bereits bestehenden Form Builder von Bachstelze werfen?

Es ermöglicht Ihnen, eine FormPage zu erstellen, auf der Sie ein benutzerdefiniertes Formular anzeigen und sogar die Ergebnisse per E-Mail senden können.

Check out the documentation here.

Verwandte Themen