Django отправка электронных писем и ответ на Vue/Axios
Я пытаюсь отправить электронную почту из Vue3/Axios
фронтенда через Django
.
В Vue3
я отправляю поля своей формы, используя axios:
<script lang="ts">
import axios from 'axios';
axios.defaults.xsrfCookieName = 'csrftoken';
axios.defaults.xsrfHeaderName = 'X-CSRFToken';
export default {
name: "Contact",
data() {
return {
name: '',
email: '',
phone: '',
message: ''
};
},
methods: {
sendEmail() {
axios
.post("send_email/", {
name: this.name,
email: this.email,
phone: this.phone,
message: this.message,
xstfCookieName: 'csrftoken',
xsrfHeaderName: 'X-CSRFToken',
headers: {
'X-CSRFToken': 'csrftoken',
}
})
.then((response) => {
console.log(response);
})
}
}
};
</script>
Я могу видеть свои поля в заголовке запроса без каких-либо проблем. Я не смог написать правильное представление, отправляющее электронную почту и отвечающее на запрос.
def contactView(request):
if (request.POST):
try:
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
name = form.cleaned_data['name']
from_email = form.cleaned_data['email']
message = form.cleaned_data['message']
print(subject)
try:
send_mail(subject, message, from_email, ['admin@example.com'])
return HttpResponse(json.dumps({'response': 'Ok'}), content_type = "application/json")
except BadHeaderError:
return HttpResponse(json.dumps({'response': 'Ko', 'message': 'invalid header found'}), content_type = "application/json")
except:
return HttpResponse(json.dumps({'response': 'Ko', 'message': 'Cannot be sent'}), content_type = "application/json")
else:
return HttpResponse(json.dumps({'response': 'Ko', 'message': 'Cannot be sent'}), content_type = "application/json")
Можете ли вы помочь мне исправить это?
Спасибо