Freut mich, dich kennenzulernen. Das ist Taro Man. Normalerweise entwickle ich Webdienste.
Neulich wollte ich plötzlich ein ** Anfrageformular ** vorbereiten, Außerdem wollte ich den Inhalt an meine ** E-Mail-Adresse ** senden, also Implementiert in ** Python **.
Dieser Artikel verwendet ** Django **. Django ist sehr praktisch.
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.
#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.")
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.
#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
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
.
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>
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>
Definieren Sie ** URL und Prozesszuordnung ** in urls.py
.
#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'),
]
Schließlich definiert settings.py
die vom Programm verwendeten ** E-Mail-Informationen **.
Geben Sie den SMTP-Server, die Portnummer und die Benutzerinformationen an.
EMAIL_HOST = 'smtp.XXX.com'
EMAIL_PORT = XXX
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'XXX'
EMAIL_USE_TLS = True
Mithilfe der Django-Standardfunktionen konnten wir problemlos ein Anfrageformular erstellen. Ich hoffe, es ist hilfreich, wenn Sie ein Anfrageformular erstellen möchten.
Recommended Posts