【问题标题】:Submit button still sends email提交按钮仍然发送电子邮件
【发布时间】:2011-02-24 13:49:33
【问题描述】:

我有一个名为 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 %}

【问题讨论】:

    标签: python html django email


    【解决方案1】:

    首先,无论是否删除,您的代码都会提交确认。

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

    将提交按钮name属性设置为'delete'&lt;input type="submit" name="delete" /&gt;

    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:
    
                ...
    

    【讨论】:

    • 似乎您对提交确认部分的权利。有没有其他方法可以在不使用发送邮件的情况下删除号码?
    • 是的,看看我的例子: if 'delete': delete, else: 'confirm' (因为看起来你只有 2 个选项
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多