[PYTHON] Formulaire de demande Django 2

supposition

Suite de la session précédente.

https://qiita.com/yusuke_mrmt/items/ebefdb6e8704913f6a4c

Sujet principal

Définissez le mot de passe de l'application dans Gmail.

Configurez l'authentification en deux étapes.

Tout d'abord, ouvrez l'application Gmail et appuyez sur la barre de menus en haut à gauche. Il y a ** Paramètres ** en bas, alors appuyez dessus.

Appuyez sur ** Gérer les comptes Google **.

Sélectionnez l'élément ** Sécurité ** et sélectionnez ** Protégez votre compte ** et définissez les paramètres appropriés Faisons des paramètres tels que l'authentification en deux étapes.

Le mot de passe obtenu n'est utilisé que pour l'application, comme le dit Google Je pense que vous n'avez pas à prendre de mesures comme le garder quelque part. Cependant, comme il est décrit dans le fichier de paramètres Django ** settings.py </ code> ** Copions-le dans un éditeur de texte.

Ajouter une fonction d'envoi de courrier

Nous ajouterons la fonction d'envoi de courrier de Django.

Tout d'abord, dans le fichier de paramètres ** settings.py </ code> ** Décrivez comment utiliser le serveur de messagerie.

Lorsque vous publiez du code sur GitHub, utilisez un fichier .gitignore </ code>, etc. Assurez-vous de donner l'exclusion complètement.

project/project/settings.py


STATIC_URL = '/static/'

#Pour le serveur de messagerie
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'Mot de passe d'application obtenu'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

Puis dans views.py </ code> Traiter le message écrit dans le formulaire de demande Je vais l'ajouter pour que je puisse répondre de manière appropriée.

project/contact/views.py



from django.shortcuts import render, redirect
from .forms import ContactForm
from django.http import HttpResponse #Postscript
from django.conf import settings #Postscript
from django.core.mail import BadHeaderError, send_mail #Postscript

.........

def contact_form(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            #Postscript
            subject = form.cleaned_data['subject']
            message = form.cleaned_data['message']
            sender = form.cleaned_data['sender']
            myself = form.cleaned_data['myself']
            recipients = [settings.EMAIL_HOST_USER]
            if myself:
                recipients.append(sender)
            try:
                send_mail(subject, message, sender, recipients)
            except BadHeaderError:
                return HttpResponse('Un en-tête non valide a été trouvé.')
            return redirect('contact:complete')
    else:
        form = ContactForm()
    return render(request, 'contact/contact_form.html', {'form': form})

.........

Pour formater et renvoyer les données validées avec form.is_valid () </ code> Stocker dans une variable en utilisant clean_data [] </ code>.

destinataires </ code> est le fichier de configuration Je passe mon adresse définie dans settings.py.

send_mail </ code> nécessite 4 arguments. Envoyez l'objet / le message / l'expéditeur à votre propre adresse.

  • L'expéditeur (adresse de l'expéditeur) ne s'affichera pas dans votre boîte de réception, changez-le plus tard.

BadHeaderError </ code> est une description pour empêcher l'injection d'en-tête.

if_myself </ code> correspond au moment où l'expéditeur coche la case L'adresse de l'expéditeur (expéditeur) est ajoutée aux destinataires et un e-mail est envoyé aux deux parties.

L'expéditeur du courrier envoyé aux deux parties proviendra de la propre adresse définie.

Envoyons-le une fois. Si vous êtes redirigé pour terminer la transmission, vous réussissez.

Recommended Posts