[GO] [Python] Wenn Sie plötzlich ein Anfrageformular erstellen möchten

Freut mich, dich kennenzulernen. Das ist Taro Man. Normalerweise entwickle ich Webdienste.

Einführung

Neulich wollte ich plötzlich ein ** Anfrageformular ** vorbereiten, Außerdem wollte ich den Inhalt an meine ** E-Mail-Adresse ** senden, also Implementiert in ** Python **.

Gesamtbild

Dieser Artikel verwendet ** Django **. Django ist sehr praktisch.

本文を追加.png

Formulardefinition

Die Formulardefinition erfolgt in forms.py.

Grundsätzlich wird es durch Importieren der ** Django-Standardfunktion ** erstellt.

Definieren Sie außerdem ** Formularelemente **. Es ist wie "Name", "Kontaktinformationen", "Anfrageinhalt". Sie können auch obligatorische Einstellungen und Zeichenbeschränkungen für jedes Element definieren.

Beispielcode
#Importieren Sie Django-Standardfunktionen
from django import forms
from django.core.mail import BadHeaderError, send_mail
from django.http import HttpResponse
#Importieren Sie die Django-Einstellungen
from django.conf import settings


class ContactForm(forms.Form):
    #Als Formularelement"Name"Definieren
    name = forms.CharField(
        label='',
        max_length=100,
        widget=forms.TextInput(attrs={
            'class': 'form-control',
            'placeholder': "Name",
        }),
    )
    #Als Formularelement"Mail Adresse"Definieren
    email = forms.EmailField(
        label='',
        widget=forms.EmailInput(attrs={
            'class': 'form-control',
            'placeholder': "Mail Adresse",
        }),
    )
    #Als Formularelement"Inhalt der Anfrage"Definieren
    message = forms.CharField(
        label='',
        widget=forms.Textarea(attrs={
            'class': 'form-control',
            'placeholder': "Inhalt der Anfrage",
        }),
    )

    #eine E-Mail senden
    def send_email(self):
        subject = "Kontaktiere uns"
        message = self.cleaned_data['message']
        name = self.cleaned_data['name']
        email = self.cleaned_data['email']
        from_email = '{name} <{email}>'.format(name=name, email=email)
        #Geben Sie die Empfängerliste an
        recipient_list = [settings.EMAIL_HOST_USER]
        try:
            send_mail(subject, message, from_email, recipient_list)
        except BadHeaderError:
            return HttpResponse("Ein ungültiger Header wurde erkannt.")

Prozessdefinition

Der Prozess ist in views.py definiert.

Dies wird auch durch Importieren der ** Django-Standardfunktion ** erstellt.

Importieren Sie außerdem die obige Formulardefinition. Geben Sie außerdem den anzuzeigenden HTML-Code ** und die zu ändernde URL ** an.

Beispielcode
#Importieren Sie Django-Standardfunktionen
from django.urls import reverse_lazy
from django.views.generic import TemplateView
from django.views.generic.edit import FormView

# forms.Formulardefinition aus py importieren
from .forms import ContactForm

#Definieren Sie das Verhalten des Submit-Ereignisses
class ContactFormView(FormView):
    #Geben Sie den HTML-Code an, der angezeigt werden soll
    template_name = 'contact_form.html'
    # form.Geben Sie den in py definierten Klassennamen an
    form_class = ContactForm
    #Geben Sie die URL nach dem Übergang als Argument an
    success_url = reverse_lazy('contact_result')

    #Eine E-Mail senden
    def form_valid(self, form):
        form.send_email()
        return super().form_valid(form)

#Definieren Sie das Verhalten nach dem Absenden eines Formulars
class ContactResultView(TemplateView):
    #Geben Sie den HTML-Code an, der angezeigt werden soll
    template_name = 'contact_result.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['success'] = "Die Anfrage wurde erfolgreich gesendet."
        return context

Bildschirmdefinition

Bereiten Sie nach dem Senden der Anfrage einen Anfragebildschirm und einen Bildschirm vor.

Verwenden Sie auf dem Anfragebildschirm {{form.as_p}} to Rendert die in der Formulardefinition definierten Elemente mit dem Tag

.

Anfragebildschirm

contact_form.html


<h4>Kontaktiere uns</h4>
  <div>
    <p><br>Bitte geben Sie die erforderlichen Informationen ein.</p>
    <form method="POST">{% csrf_token %}
      {{ form.as_p }}
      <button type="submit" class="btn">Senden</button>
      <a href="{% url 'top' %}">Zurück nach oben</a>
    </form>
  </div>
</div>
Bildschirm nach dem Senden einer Anfrage

contact_result.html


<div>
  <p>
Anfrageübertragung abgeschlossen
  </p>
  <div>
    <p>
Vielen Dank für Ihre Anfrage.<br>
Wir werden nach Bestätigung des Inhalts antworten.
    </p>
    <a href="{% url 'top' %}">Zurück nach oben</a>
  </div>
</div>

URL-Definition

Definieren Sie ** URL und Prozesszuordnung ** in urls.py.

Beispielcode
#Verarbeitungsklasse importieren
# <PROJECT_NAME>Ist Ihr Projektname
from <PROJECT_NAME>.views import ContactFormView, ContactResultView

urlpatterns = [
    # ...
    path('contact/', ContactFormView.as_view(), name='contact_form'),
    path('result/', ContactResultView.as_view(), name='contact_result'),
]

Definition der E-Mail-Informationen

Schließlich definiert settings.py die vom Programm verwendeten ** E-Mail-Informationen **. Geben Sie den SMTP-Server, die Portnummer und die Benutzerinformationen an.

Beispielcode
EMAIL_HOST = 'smtp.XXX.com'
EMAIL_PORT = XXX
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'XXX'
EMAIL_USE_TLS = True

Zusammenfassung

Mithilfe der Django-Standardfunktionen konnten wir problemlos ein Anfrageformular erstellen. Ich hoffe, es ist hilfreich, wenn Sie ein Anfrageformular erstellen möchten.

Recommended Posts

[Python] Wenn Sie plötzlich ein Anfrageformular erstellen möchten
Wenn Sie Word Cloud erstellen möchten.
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Ich möchte wissen, ob Sie Python auf Mac ・ Iroha installieren
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Was tun, wenn Sie mit Python keine E-Mail an Yahoo senden konnten?
Wenn Sie awsebcli in CircleCI aufnehmen möchten, geben Sie die Python-Version an
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
[Python] Wenn Sie ein Streudiagramm mehrerer Cluster zeichnen möchten
Wenn Sie Wörter in Python zählen möchten, können Sie bequem Counter verwenden.
Ich möchte mit Python ein Fenster erstellen
So erstellen Sie eine Umgebung, wenn Sie Python2.7 nach der Installation von Anaconda3 verwenden möchten
Wenn Sie eine TODO-Anwendung (verteilt) jetzt nur mit Python erstellen möchten
Was tun, wenn bei der Installation von Python mit pyenv eine Fehlermeldung angezeigt wird?
Wenn Sie einen Discord-Bot mit Python erstellen möchten, verwenden wir ein Framework
Wenn Sie Cython verwenden möchten, schließen Sie auch python-dev ein
So erstellen Sie einen Bild-Uploader mit Bottle (Python)
Was tun, wenn bei der Installation von Python 2 mit pyenv ein OpenSSL-Fehler auftritt?
Was tun, wenn beim Importieren von matplotlib in Python (Mac) eine Fehlermeldung angezeigt wird?
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
Eine Funktionsnotiz, die nützlich ist, wenn Sie den Debugger aufrufen möchten, wenn beim Ausführen eines Python-Skripts ein Fehler auftritt.
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ich möchte initialisieren, wenn der Wert leer ist (Python)
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
Wenn Sie möchten, dass Ihre Kollegen dieselbe Sprache verwenden
Eine Einführung in die Python-Programmierung
[Python Kivy] So erstellen Sie mit pyinstaller eine exe-Datei
Wenn Sie ein Argument in die Abschlussfunktion einfügen und später ausführen möchten
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
[Django] Memo zum Erstellen einer Umgebung von Django + MySQL + Vue.js [Python]
[Python] Wenn Sie eine Datei mit demselben Namen wie das zu importierende Modul erstellen, tritt ein Attributfehler auf.
[Django] Was tun, wenn das zu erstellende Modell viele Felder enthält?
Was tun, wenn die Fehlermeldung angezeigt wird, dass der c-Compiler in configure keine ausführbaren Dateien erstellen kann?
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Möchten Sie mit Python Selenium auf allgemeine Zwecke warten?
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Was tun, wenn Sie pyaudio nicht mit pip #Python installieren können?
Was tun, wenn in Python minus Null angezeigt wird?
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Unverzichtbar, wenn Sie Python verwenden! Wie man Numpy benutzt, um Berechnungen zu beschleunigen!
Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
[TensorFlow] Wenn Sie TensorBoard ausführen möchten, installieren Sie es mit pip.
Überprüfen Sie, ob Sie in Python eine Verbindung zu einem TCP-Port herstellen können
Verschiedene Möglichkeiten, um in Python ein Array von Zahlen von 1 bis 10 zu erstellen.
[Für Python] Erstellen Sie schnell eine Upload-Datei in AWS Lambda Layer
Schön dich mit Python zu treffen
Python-Verzeichniserstellung Korrespondenz, wenn Verzeichnis vorhanden ist
Wichtige Operationen, die Sie wissen möchten
5 Möglichkeiten zum Erstellen eines Python-Chatbots
Ich möchte mit Python debuggen
Erste Schritte mit Python für Nicht-Ingenieure
Eine Alternative zu "Pause" in Python
[Python] API zum Senden von Google Mail erstellen
[Python Tutorial] Eine einfache Einführung in Python