Je voulais créer un formulaire de contact sur mon site web. Je peux trouver PHP des formulaires de messagerie partout, mais il n'y a pas d'exemple Django. Je ne sais pas comment le faire moi-même, alors je demande s'il y a quelqu'un qui pourrait me dire à partir de zéro - comment créer un formulaire de contact par courrier électronique sur un site web en utilisant Django?
Un exemple simple pourrait être:
urls.py
from Django.conf.urls import patterns, url
from yourapp import views
urlpatterns = patterns(
'',
url(r'^email/$',
views.email,
name='email'
),
url(r'^thanks/$',
views.thanks,
name='thanks'
),
)
forms.py
from Django import forms
class ContactForm(forms.Form):
from_email = forms.EmailField(required=True)
subject = forms.CharField(required=True)
message = forms.CharField(widget=forms.Textarea)
views.py
from Django.core.mail import send_mail, BadHeaderError
from Django.http import HttpResponse, HttpResponseRedirect
from Django.shortcuts import render, redirect
from yourapp.forms import ContactForm
def email(request):
if request.method == 'GET':
form = ContactForm()
else:
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
from_email = form.cleaned_data['from_email']
message = form.cleaned_data['message']
try:
send_mail(subject, message, from_email, ['[email protected]'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('thanks')
return render(request, "yourapp/email.html", {'form': form})
def thanks(request):
return HttpResponse('Thank you for your message.')
email.html
<form method="post">
{% csrf_token %}
{{ form }}
<div class="form-actions">
<button type="submit">Send</button>
</div>
</form>
Si la simplicité est importante, Formspree pourrait être une alternative. Ils le rendent super facile.
Vous devez juste insérer quelque chose comme ceci dans votre code:
<form action="https://formspree.io/[email protected]"
method="POST">
<input type="text" name="name">
<input type="email" name="_replyto">
<textarea name="message"></textarea>
<input type="submit" value="Send">
</form>
Ensuite, vous validez l'e-mail et vous êtes prêt à partir.
Pour plus d'informations, cette vidéo explique comment procéder.
Exemple
urlpatterns = patterns(
'',
url(r'^email/$',
views.email,
name='email'
),
url(r'^thanks/$',
views.thanks,
name='thanks'
),
)