[PYTHON] Formulaire de contact Django

supposition

Gmail uniquement

Django installé

Nom du projet: échantillon Nom de l'application: contact

Sujet principal

Je vais le mettre en œuvre immédiatement.

Après avoir installé Django, créez un projet.

$ django-admin startproject project

Après avoir accédé au répertoire project </ code> avec la commande cd, créez un répertoire pour votre application.

$ python3 manage.py startapp contact

Nous modifierons settings.py </ code>.

sample/project/settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'contact', #Postscript
]

LANGUAGE_CODE = 'ja' #Changement
TIME_ZONE = 'Asia/Tokyo' #Changement

Modifiez pour que l'application soit liée à urls.py </ code> dans le même répertoire que settings.py </ code>.

sample/project/urls.py


from django.contrib import admin
from django.urls import path, include #Postscript

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('contact.urls')), #Postscript
]

Ensuite, modifiez le répertoire contact </ code>. Créez un nouveau urls.py </ code> et écrivez le modèle d'URL.

sample/contact/urls.py


from django.urls import path
from . import views

app_name = 'contact'
urlpatterns = [
        path('', views.index, name='index'),
        path('contact_form/', views.contact_form, name='contact_form'),
        path('contact_form/contact/complete/', views.complete, name='complete'),
]

Modifiez views.py </ code> dans le répertoire contac pour l'associer au modèle.

sample/contact/views.py


from django.shortcuts import render


def index(request):
    return render(request, 'contact/index.html')

#Écran du formulaire de demande
def contact_form(request):
    return render(request, 'contact/contact_form.html')

#Écran de fin de transmission
def complete(request):
    return render(request, 'contact/complete.html')

Vient ensuite la création du modèle. Créez un nouveau répertoire (dossier) appelé templates </ code> dans le répertoire des contacts. Créez un ** répertoire de contacts ** dans le répertoire des modèles Créez index.html </ code> dans le répertoire des contacts.

sample/contact/templates/contact/index.html


<!doctype html>
<html>
  <head>
    <title>Site Internet</title>
  </head>
  <body>

<center>
<a href="{% url 'contact:contact_form' %}">
<h2>Formulaire de demande</h2>
</a>
</center>
</body>
</html>

Vient ensuite le formulaire de demande.

sample/contact/templates/contact/contact_form.html


<center>
<h1>formulaire de saisie</h1><hr><br>
</center>

Ceci est l'écran de fin de transmission.

sample/contact/templates/contact/complete.html


<center>
<h1>envoyer complètement</h1>
<a href="{% url 'contact:index' %}">
<p>Jusqu'au sommet</p>
</a>
</center>

Création de formulaire

Affichez le modèle à l'aide de la classe Form de Django. Créez un nouveau forms.py </ code> dans le répertoire des contacts.

sample/contact/forms.py


from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(label='matière', max_length=100)
    sender = forms.EmailField(label='Email', help_text='* Veuillez vérifier et entrer correctement.')
    message = forms.CharField(label='message', widget=forms.Textarea)
    myself = forms.BooleanField(label='Recevez le même contenu', required=False)

■ sujet: sujet ■ expéditeur: entrée d'e-mail ■ help_text: une note qui sera affichée plus tard dans le modèle. ■ message: en définissant widget = forms.Textarea </ code> à écrire Vous recevrez une zone de texte qui vous permet d'écrire plusieurs lignes. ■ moi-même: case à cocher.

Traitez le ContactForm créé avec contact_form </ code> dans views.py </ code> et Rendez-le visible dans le modèle.

sample/contact/views.py


from django.shortcuts import render, redirect #Postscript
from .forms import ContactForm #Postscript

........
........
def contact_form(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            return redirect('contact:complete')
    else:
        form = ContactForm()
    return render(request, 'contact/contact_form.html', {'form': form})
.........
.........

Si le contenu du formulaire POST </ code> est vérifié avec form.is_valid () </ code> et corrigé C'est une description qui est passée à complete.html </ code>.

Ensuite, je vais le décrire pour l'affichage. Modifiez contact_form.html </ code>.

sample/templates/contact/contact_form.html


<center>
<h1>formulaire de saisie</h1><hr><br>

<!--Postscript-->
<form action="{% url 'contact:contact_form' %}" method="post">
    {% csrf_token %}
<table>
    {{ form.as_table }}
</table><br>
    <input type="submit" value="Envoyer">
</form>
</center>

{% csrf_token%} </ code> est une contre-mesure de falsification de demande intersite (CSRF). Sans cela, une erreur se produira.

Gmail sera décrit plus tard.

Recommended Posts