2011-02-24 52 views
0

我有一个视图叫做send_confirmation电子邮件 - 基本上发送电子邮件。我想添加一个可以删除订单号的按钮。以同样的形式。不幸。如果我添加一个说删除该订单的按钮,那么出于某种原因,我的程序认为这是发送邮件按钮,并且将发送电子邮件,即使我已经设置了该按钮以删除订单。我只想让该按钮删除订单号码,而无需发送电子邮件。提交按钮仍然发送电子邮件

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 %} 

回答

0

首先,您的代码将提交确认,而不管删除。

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

将提交按钮name属性'delete'<input type="submit" name="delete" />

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: 

      ... 
+0

看来你对确认部分的提交权利。有没有另外一种方法可以在不使用发送邮件的情况下删除号码? – Shehzad009 2011-02-24 14:45:00

+0

是的,看看我的例子:如果'删除':删除,否则:'确认'(因为它似乎只有2个选项 – 2011-02-24 14:48:06

相关问题