Python 在django中使用一个窗体执行两个操作

Python 在django中使用一个窗体执行两个操作,python,django,Python,Django,在这里,我尝试执行两个操作:删除或向选定用户发送电子邮件。发送电子邮件时,需要一个表单,因此我将选中的用户存储在这样一个会话中,发送电子邮件后,我将使用会话['users']从会话中删除所有用户。清除()。它说,即使我提供了sub和msg,也需要sub和msg。 这个代码怎么了 删除所选用户工作正常 def selected_users(request): form = SendMailForm() selected_users = get_user_model().object

在这里,我尝试执行两个操作:删除或向选定用户发送电子邮件。发送电子邮件时,需要一个表单,因此我将选中的用户存储在这样一个会话中,发送电子邮件后,我将使用
会话['users']从会话中删除所有用户。清除()
。它说,即使我提供了sub和msg,也需要sub和msg。 这个代码怎么了

删除所选用户工作正常

def selected_users(request):
    form = SendMailForm()
    selected_users = get_user_model().objects.filter(id__in=request.POST.getlist('users'))
    initial = {'users':[]}
    session = request.session.get('users',initial)
    if selected_users:
        for user in selected_users:
            if not user in session['users']:
                session['users'].append(user.email)
    print('hello1',session['users'])
    if selected_users and  request.method == 'POST' and 'delete_selected' in request.POST:
            count = selected_users.count()
            selected_users.delete()
            messages.success(request, '{} users deleted.'.format(count))
            return redirect('view_users')
    elif request.method == 'POST' and 'mail_selected' in request.POST:
            form = SendMailForm(request.POST or None)
            config = EmailConfiguration.objects.order_by('-date').first()
            backend = EmailBackend(host=config.email_host, port=config.email_port, username=config.email_host_user,
                                   password=config.email_host_password, use_tls=config.email_use_tls)
            if form.is_valid():
                sub = form.cleaned_data['sub']
                msg = form.cleaned_data['msg']
                for email in session['users']:
                    email = EmailMessage(subject=sub, body=msg, from_email=config.email_host_user, to=[email],
                                             connection=backend)

                    email.send()
                    # clearing users from session after email sends
                    session['users'].clear()
                    messages.success(request, 'Your mail sent.')
                    return redirect('view_users')
            else:
                print(form.errors)

    return render(request, 'send_mail_selected.html', {'users': selected_users,'form':form,'session':session})
forms.py

class SendMailForm(forms.Form):
    #to = forms.EmailField(required=False)
    sub = forms.CharField(max_length=250)
    msg = forms.CharField(widget=forms.Textarea)
模板

 <form  method="POST" >
  {% csrf_token %                               

{{form.as_p}}
 <button type="submit" class="btn btn-primary" name="mail_selected">Send </button>

</form>

{%csrf\u令牌%
{{form.as_p}}
发送

您可能应该使用
exists()
检查
所选用户中是否存在任何用户:
@ruddra它说需要sub和msg。我猜您看到了表单。错误。请共享您的html和表单code@ruddra是的。更新了我的问题。您可能应该使用
exists()
检查
所选用户中是否存在任何用户。即:
如果所选用户。exists():
@ruddra它说需要sub和msg。我猜您看到了表单。错误。请共享您的html和表单code@ruddra是的。更新了我的问题