Ravi de vous rencontrer. C'est Taro Man. Je développe généralement des services Web.
L'autre jour, j'ai soudain voulu préparer un ** formulaire de demande **, De plus, je voulais envoyer le contenu à mon ** adresse e-mail **, donc Implémenté en ** Python **.
Cet article utilise ** Django **. Django est très pratique.
La définition du formulaire se fait dans forms.py
.
Fondamentalement, il est créé en important la ** fonction standard de Django **.
De plus, définissez des ** éléments de formulaire **. C'est comme "nom", "coordonnées", "contenu de l'enquête". Vous pouvez également définir des paramètres obligatoires et des restrictions de caractères pour chaque élément.
#Importer les fonctionnalités standard de Django
from django import forms
from django.core.mail import BadHeaderError, send_mail
from django.http import HttpResponse
#Importer les paramètres Django
from django.conf import settings
class ContactForm(forms.Form):
#En tant qu'élément de formulaire"Nom"Définir
name = forms.CharField(
label='',
max_length=100,
widget=forms.TextInput(attrs={
'class': 'form-control',
'placeholder': "Nom",
}),
)
#En tant qu'élément de formulaire"adresse mail"Définir
email = forms.EmailField(
label='',
widget=forms.EmailInput(attrs={
'class': 'form-control',
'placeholder': "adresse mail",
}),
)
#En tant qu'élément de formulaire"Contenu de la demande"Définir
message = forms.CharField(
label='',
widget=forms.Textarea(attrs={
'class': 'form-control',
'placeholder': "Contenu de la demande",
}),
)
#envoyer un e-mail
def send_email(self):
subject = "Nous contacter"
message = self.cleaned_data['message']
name = self.cleaned_data['name']
email = self.cleaned_data['email']
from_email = '{name} <{email}>'.format(name=name, email=email)
#Spécifier la liste des destinataires
recipient_list = [settings.EMAIL_HOST_USER]
try:
send_mail(subject, message, from_email, recipient_list)
except BadHeaderError:
return HttpResponse("Un en-tête non valide a été détecté.")
Le processus est défini dans views.py
.
Ceci est également créé en important la ** fonction standard de Django **.
En outre, importez la définition de formulaire ci-dessus. Spécifiez également le HTML ** à afficher et l'URL ** à transférer.
#Importer les fonctionnalités standard de Django
from django.urls import reverse_lazy
from django.views.generic import TemplateView
from django.views.generic.edit import FormView
# forms.Importer la définition de formulaire depuis py
from .forms import ContactForm
#Définir le comportement de l'événement de soumission
class ContactFormView(FormView):
#Spécifiez le html à afficher
template_name = 'contact_form.html'
# form.Spécifiez le nom de classe défini dans py
form_class = ContactForm
#Spécifiez l'url après la transition comme argument
success_url = reverse_lazy('contact_result')
#Envoyer un e-mail
def form_valid(self, form):
form.send_email()
return super().form_valid(form)
#Définir le comportement après avoir soumis un formulaire
class ContactResultView(TemplateView):
#Spécifiez le html à afficher
template_name = 'contact_result.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['success'] = "L'enquête a été envoyée avec succès."
return context
Préparez un écran de demande et un écran après l'envoi de la demande.
Sur l'écran de demande, utilisez «{{form.as_p}}» pour
Rend les éléments définis dans la définition de formulaire avec la balise <p>
.
<détails> Définissez ** URL et processus d'association ** dans ʻurls.py`. Enfin, En utilisant les fonctions standard de Django, nous avons pu créer facilement un formulaire de demande.
J'espère que cela vous sera utile lorsque vous souhaitez créer un formulaire de demande.
Recommended Posts
contact_form.html
<h4>Nous contacter</h4>
<div>
<p><br>Veuillez saisir les informations requises.</p>
<form method="POST">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn">Envoyer</button>
<a href="{% url 'top' %}">Retour au sommet</a>
</form>
</div>
</div>
Écran après envoi d'une demande summary>
contact_result.html
<div>
<p>
Transmission de la demande terminée
</p>
<div>
<p>
Merci pour votre demande.<br>
Nous vous répondrons après avoir confirmé le contenu.
</p>
<a href="{% url 'top' %}">Retour au sommet</a>
</div>
</div>
Définition d'URL
Exemple de code summary>
#Classe de traitement d'importation
# <PROJECT_NAME>Le nom de votre projet est-il
from <PROJECT_NAME>.views import ContactFormView, ContactResultView
urlpatterns = [
# ...
path('contact/', ContactFormView.as_view(), name='contact_form'),
path('result/', ContactResultView.as_view(), name='contact_result'),
]
Définition des informations de messagerie
settings.py
définit les ** informations de messagerie ** utilisées par le programme.
Spécifiez le serveur SMTP, le numéro de port et les informations utilisateur. Exemple de code summary>
EMAIL_HOST = 'smtp.XXX.com'
EMAIL_PORT = XXX
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'XXX'
EMAIL_USE_TLS = True
Résumé