【发布时间】:2019-06-16 05:46:31
【问题描述】:
这里我有一个表,有一个复选框,我想向该表的所有检查数据发送电子邮件。为此,我尝试了以下方法。但它不起作用。问题是在返回检查项目列表时。被检查的项目不会被退回。如何解决?
模板
<tbody>
{% for contact in contacts %}
<tr>
<td>
<input name ="messages" type="checkbox"
id="contact-{{contact.id}}" value={{contact.id}}">
<label for="contact-{{contact.id}}">{{ forloop.counter }}</label>
</td>
<td>{{ contact.name }}</td>
<td>{{ contact.email }}</td>
<td>{{ contact.subject }}</td>
<td>{{ contact.message }}</td>
</tr>
{% endfor %}
</tbody>
//modal
<button class="btn btn-primary send-mail-to-selected-btn" type="button"
data-toggle="modal" data-target="#item-unit-modal1">
Send Mail To Selected Email
</button>
<div class="modal" id="item-unit-modal1">
<div class="modal-body">
<form method="POST" action="{% url 'admin:send_mail_selected_contact' %}" class="unit-ajax-form">
{% csrf_token %}
<p><label>Subject</label> <input type="text" name="subject" class="form-control required" placeholder="Enter subject" ></p>
<p><label>Message</label> <textarea name="message" class="form-control required" placeholder="Enter message" ></textarea></p>
<button class="btn btn-primary mt-30">Send Mail</button>
</form>
</div>
views.py
def send_mail_selected_contact(request):
selected_contact = ContactForm.objects.filter(id__in=request.POST.getlist('messages'))
print(selected_contact)
form = SendMailContact(request.POST or None)
if form.is_valid():
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
for contact in selected_contact:
send_mail(subject, message, ' <settings.EMAIL_HOST_USER>', [contact.email])
messages.success(request, 'Mail Sent')
return redirect('admin:contact_message')
ajax
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(document).on('click', '.send-mail-to-selected-btn', function(){
var messages = new Array();
$("input:checked").each(function() {
messages.push($(this).val());
});
console.log(messages); #here i can see the id of checked email
});
$.ajax({
url:'admin/selected/send/mail/contact/',
data:{
name: name,
messages: messages,
}
});
</script>
forms.py
class SendMailContact(forms.Form):
subject = forms.CharField(max_length=250)
message = forms.CharField(widget=forms.Textarea)
【问题讨论】:
-
你没有调用 ajax 所以它不会被发送
-
ok 那么如何调用 ajax 呢?
-
查看此链接:stackoverflow.com/questions/55903907/…我已经为某人回答了。
标签: django