je besoin d'une forme de courrier électronique et j'essaie ceci:Mise en erreur 403 (CSRF jeton manquant ou incorrect)
views.py
def send_email(request):
if request.method != 'POST':
form = EmailForm()
return render_to_response('mail_form.html', {'email_form': form})
form = EmailForm(request.POST, request.FILES)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
email = form.cleaned_data['email']
attach = request.FILES['attach']
try:
mail = EmailMessage(subject, message, settings.EMAIL_HOST_USER, [email])
mail.attach(attach.name, attach.read(), attach.content_type)
mail.send()
return render(request, 'mail_form.html', {'message': 'Sent email to %s'%email})
except:
return render(request, 'mail_form.html', {'message': 'Either the attachment is too big or corrupt'})
return render(request, 'mail_form.html', {'message': 'Unable to send email. Please try again later'})
forms.py
class EmailForm(forms.Form):
email = forms.EmailField()
subject = forms.CharField(max_length=100)
attach = forms.Field(widget=forms.FileInput)
message = forms.CharField(widget = forms.Textarea)
mail_form.html
...
{{message}}
<form method="post" action="">
{% csrf_token %}
{{ email_form.as_p }}
<input type ="submit" name = "send" value = "Send"/>
</form>
...
Mais co nstantly je reçois une erreur 403. J'ai essayé différentes solutions du web, mais rien n'a aidé. Qu'est-ce que je fais mal? Je comprends que quelque chose ne va pas avec csrf dans views.py, mais ne comprends pas où est le problème concrètement.
Votre indentation est incorrecte. Répare le. – 7stud
@ 7stud corrigé, merci –
Avez-vous le middleware CSRF activé 'django.middleware.csrf.CsrfViewMiddleware'? –