Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提交按钮仍然发送电子邮件_Python_Html_Django_Email - Fatal编程技术网

Python 提交按钮仍然发送电子邮件

Python 提交按钮仍然发送电子邮件,python,html,django,email,Python,Html,Django,Email,我有一个叫做send_confirmation email的视图,它基本上是发送电子邮件。我想添加一个按钮,可以删除同一表单上的订单号。不幸的是。如果我添加了一个表示删除订单的按钮,那么出于某种原因,我的程序会认为这是“发送邮件”按钮,并会发送电子邮件,即使我已将该按钮设置为删除订单。我只想用那个按钮删除订单号,而不发送电子邮件 def send_confirmation_email(request, order_no = 0, service_type = 0): order = No

我有一个叫做send_confirmation email的视图,它基本上是发送电子邮件。我想添加一个按钮,可以删除同一表单上的订单号。不幸的是。如果我添加了一个表示删除订单的按钮,那么出于某种原因,我的程序会认为这是“发送邮件”按钮,并会发送电子邮件,即使我已将该按钮设置为删除订单。我只想用那个按钮删除订单号,而不发送电子邮件

def send_confirmation_email(request, order_no = 0, service_type = 0):
    order = None
    count = 0
    title = models.SERVICE_CHOICES[int(service_type) - 1][1]
    #title = type[1]
    order_number = request.session['order_number']
    if request.POST.get('delete'):
        order_number.delete()
    try:
        order = models.Order.objects.get(pk = order_no)
        count = order.orderservicelist_set.count()
        if request.method == 'POST':

            email = EmailMessage(subject = 'Order Confirmation')
            email.to = [order.contact.email, request.user.email]
            email.body = request.POST.get('email-message', '')
            response = print_order(request, order_no)
            #email.attach('order_details.pdf', response.content, 'application/pdf')
            email.send(fail_silently = False)
            request.user.message_set.create(message = "Email confirmation sent!")
        return HttpResponseRedirect(reverse(return_clients))

except:
    return HttpResponseRedirect(reverse(return_clients))
return render_to_response('order_confirmation.html', {'order':order, 'title':title, 'count':count, 'order_number':order_number}, context_instance = RequestContext(request))

{% block right_content %}
<div id="location_header">Confirmation email</div>
<form action="." method="post">
<div class="form_container">
<fieldset class="model"><legend>Email body</legend>
        <br>
        <textarea name="email-message" rows="20">
        {{title}} Order Confirmation
        Date : {{ order.date|date:"F d, Y" }}

<div id="form_footer">
`               <input type="submit" value="Send email">
                <input type="submit" value="delete" value="Delete  Order">
        </div>


</form>
{{order_number.pk}}
{% endblock %}
def发送确认电子邮件(请求、订单号=0、服务类型=0):
订单=无
计数=0
title=模型.服务选项[int(服务类型)-1][1]
#标题=类型[1]
订单号=请求。会话['order\u number']
if request.POST.get('delete'):
订单号。删除()
尝试:
order=models.order.objects.get(pk=order\u no)
count=order.orderservicelist\u set.count()
如果request.method==“POST”:
电子邮件=电子邮件(主题='订单确认')
email.to=[order.contact.email,request.user.email]
email.body=request.POST.get('email-message','')
响应=打印订单(请求、订单号)
#电子邮件。附件('order_details.pdf',response.content',application/pdf')
email.send(失败=False)
request.user.message\u set.create(message=“已发送电子邮件确认!”)
返回HttpResponseRedirect(反向(返回客户端))
除:
返回HttpResponseRedirect(反向(返回客户端))
返回render_to_response('order_confirmation.html',{'order':order,'title','count':count,'order_number':order_number},context_实例=RequestContext(请求))
{%block right_content%}
确认电子邮件
电子邮件正文

{{title}}订单确认 日期:{order.Date}日期:“fd,Y”} ` {{order_number.pk}} {%endblock%}
首先,无论删除与否,您的代码都将提交确认

其次,您的
请求.POST.get('delete')
失败,因为POST中没有
'delete'

将提交按钮
name
属性设置为
'delete'


关于提交确认部分,您似乎是对的。有没有其他方法可以不使用“发送邮件”删除号码?是的,请看我的示例:如果“删除”:删除,否则:“确认”(因为您似乎只有2个选项)
def send_confirmation_email(request, order_no = 0, service_type = 0):
    order = None
    count = 0
    title = models.SERVICE_CHOICES[int(service_type) - 1][1]
    #title = type[1]
    order_number = request.session['order_number']

    if request.POST.get('delete'):
        order_number.delete()
    else: # else or else you will always get a confirmation regardless of delete
          # unless of course that's what you want.
        try:

            ...