ich einige E-Mail-Formular benötigen, und ich versuche dies:Erste Fehler 403 (CSRF-Token fehlenden oder falschen)
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>
...
Aber co Fast immer bekomme ich einen Fehler 403. Ich habe versucht verschiedene Lösungen aus dem Internet, aber nichts half. Was mache ich falsch? Ich verstehe, dass etwas mit csrf in views.py nicht stimmt, aber verstehe nicht, wo das Problem konkret ist.
Ihre Einrückung ist nicht korrekt. Repariere es. – 7stud
@ 7stud behoben, danke –
Haben Sie die CSRF-Middleware aktiviert 'django.middleware.csrf.CsrfViewMiddleware'? –