Как передать параметр из Django в функцию JavaScript
Я хотел бы узнать, как я могу отправить значение параметра из Django (View, Form, etc) в JavaScript функцию в js файле.
У меня есть приложение "Контакт":
Models.py
class Contact(models.Model):
firstname = models.CharField(max_length=100, verbose_name='Nombre')
lastname = models.CharField(max_length=100, verbose_name='Apellidos')
email = models.EmailField(max_length=100, verbose_name='eMail')
message = models.TextField(max_length=1000, verbose_name='Mensaje')
created = models.DateTimeField(auto_now_add=True, verbose_name='Creado')
updated = models.DateTimeField(auto_now=True, verbose_name='Editado')
class Meta():
verbose_name = 'Contacta Mensaje'
verbose_name_plural = 'Contacta Mensajes'
ordering = ['-created']
def __str__(self):
return str(self.email)
Forms.py
class ContactForm(forms.ModelForm):
class Meta:
model = Contact
fields = ("firstname", "lastname", "email", "message")
widgets = {
'firstname': forms.TextInput(attrs={'class':'form-control', 'id': 'id_firstname'}),
'lastname': forms.TextInput(attrs={'class':'form-control', 'id': 'id_lastname'}),
'email': forms.EmailInput(attrs={'class':'form-control', 'id': 'id_email'}),
'message': forms.Textarea(attrs={'class':'form-control', 'id': 'id_message'}),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
View.py
class ContactView(CreateView):
form_class = ContactForm
template_name = 'core/contact.html'
JS функция в файле theme.js
forms: function () {
(function() {
"use strict";
window.addEventListener("load", function() {
var forms = document.querySelectorAll(".needs-validation");
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener("submit", function(event) {
if(form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add("was-validated");
if(form.checkValidity() === true) {
event.preventDefault();
form.classList.remove("was-validated");
// Send message only if the form has class .contact-form
var isContactForm = form.classList.contains('contact-form');
console.log(isContactForm);
if(isContactForm) {
var data = new FormData(form);
var alertClass = 'alert-danger';
fetch("", {
method: "post",
body: data
}).then((data) => {
if(data.ok) {
alertClass = 'alert-success';
}
return data.text();
}).then((txt) => {
var alertBox = '<div class="alert ' + alertClass + ' alert-dismissible fade show"><button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>' + txt + '</div>';
if(alertClass && txt) {
form.querySelector(".messages").insertAdjacentHTML('beforeend', alertBox);
form.reset();
}
}).catch((err) => {
console.log(err);
});
}
}
}, false);
});
}, false);
})();
},
Функция JavaScript имеет параметр с именем 'txt', который устанавливает сообщение в 'contact .html" ведьмы в результате отправки формы.
Когда контактная форма отправлена и сохранена в базе данных, я хочу передать значение сообщения об успехе в функцию javascript. А если произошла ошибка сервера, передать сообщение о неудаче.
Как я могу передать это сообщение из Django View или Form в функцию JavaScript, написанную выше.
Спасибо. С уважением,