首页 > 解决方案 > 复选框未在 HTML 页面上返回所需的值

问题描述

我正在使用 Flask 和 HTML。我有一个发送邮件的 HTML 页面。它有一个复选框。如果选中该复选框,则应将链接(现在是硬编码)添加到消息框(即文本框)中。我已经在 Flask 中编写了它的逻辑,但是当复选框被选中时它没有显示链接。

这是在 app.py 文件中:


@app.route('/sendMail', methods=['GET', 'POST'])

@is_logged_in

def sendMail():
    senders_list = request.files['contact-list']
    senders_location = "F:\\" + secure_filename(senders_list.filename)
    senders_list.save(senders_location)
    attachment_file = request.files.getlist('attachment[]')
    attachment_files = []
    Attachment_type = ""
    if attachment_file:
        for files in attachment_file:
            attachment_location = "F:\\" + secure_filename(files.filename)
            files.save(attachment_location)
            attachment_files.append(attachment_location)
            if 'survey' in files.filename.lower():
                Attachment_type= "Survey Sent"
    cc = request.form.get('cc')
    if "," in cc:
        cc=cc.split(",")
    bcc = request.form.get('bcc')
    subject = request.form.get('subject')
    
    -------------------CHECKBOX PART------------------------
    chk_val = request.form.get('chkbox')
    if chk_val is not None:
        
        message = "Box link : something something"+ request.form.get('message')
        flash("Download Questionnaire from this link",'info')
    else:
        message = request.form.get('message')
-----------------------------------------------------------------------------
    csvfile1 = open(senders_location, 'rt')
    reader1 = csv.DictReader(csvfile1)
    k = Sendmail.Sendmail()
    for row in reader1:
        to = row['Email']
        if "," in to:
            to = to.split(",")
        print(to)
        subjects="[CDS] -"+row['Customer Name'] +"-"+subject +"-" + row['TP Name'].strip()
        attachment = it.takewhile(lambda x: os.path.exists(x), attachment_files)
        k.send_mail(subjects, message, to,cc, bcc, attach=attachment)
        tpDetail = {
            "TP name": row['TP Name'],
            "Date": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"),
            "Survey Sent": "YES" if (len(Attachment_type)>2 and request.form.get('chkbox') == True)  else "NO", '''modified '''
            "Questionnaire Sent": "NO",
            "Status" : Attachment_type
            
        }
        customerDetails = {
                "_id" : row['Customer Name'],
                "Customer Name" : row['Customer Name'],
                "Subject" : subjects,
                "First Date": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"),
                "TPlist" : {}
            }
        dao.saveAnyData(customerDetails,tpDetail)
    flash('Mail Sent', 'info')
    return redirect(url_for('massMail'))

这是 HTML 文件:

% extends 'layout.html' %}

{% block body %}

        <form role="form" class="form-horizontal" method="POST" action="/sendMail" enctype='multipart/form-data'>
              <div  class="form-group">
                  <label class="col-lg-2 control-label">TP Contacts file</label>
                  <div class="col-lg-10">
                      <input type="file" id="tp-contact" name="tp-contact" class="form-control" accept=".csv" placeholder="No file selected">
                  </div>
                </div>
              <div class="form-group">
                  <label class="col-lg-2 control-label">Cc</label>
                  <div class="col-lg-10">
                      <input type="text" placeholder="" id="cc" name="cc" class="form-control">
                  </div>
              </div>
                <div class="form-group">
                      <label class="col-lg-2 control-label">Bcc</label>
                      <div class="col-lg-10">
                          <input type="text" placeholder="" id="bcc" name="bcc" class="form-control">
                      </div>
                  </div>
              <div class="form-group">
                  <label class="col-lg-2 control-label">Subject</label>
                  <div class="col-lg-10">
                      <input type="text" placeholder="" id="subject" name="subject" class="form-control">
                  </div>
              </div>
              
               <!---------------------------- Added this checkbox ----------------------------------------->
              <div class="form-group">
                   <label class="col-lg-2 control-label" for="defaultUnchecked">TP Survey</label>
                    <div class="col-lg-10">
                        <input type="checkbox" class="form-control" id="chkbox" name="chkbox">
                    </div>
              </div>
        ------------------------------------------------------------------------------------      
              <div class="form-group">
                  <label class="col-lg-2 control-label">Message</label>
                  <div class="col-lg-10">
                      <textarea rows="10" cols="30" class="form-control" id="message" name="message"></textarea>
                  </div>
              </div>
              <div class="form-group">
                  <div class="col-lg-offset-2 col-lg-10">

                  <div  class="form-group">
                      <label class="col-lg-2 control-label">Add Attachment</label>
                      <div class="col-lg-10">
                          <input type="file" id="attachment" name="attachment[]" class="form-control" multiple="multiple">
                      </div>
                  </div>
                      <!--<span class="btn green fileinput-button">
                        <i class="fa fa-plus fa fa-white"></i>
                        <span>Attachment</span>
                        <input type="file" name="files[]" accept=".csv" multiple>
                      </span>-->
                      <button class="btn btn-send" type="submit">Send</button>
                  </div>
              </div>
          </form>

 {% endblock %}

我该如何解决这个问题?

此外,当我使用“flask run command”运行这个 app.py 时,我遇到了这个错误,因此我无法在我的系统中测试它。

环境:生产

警告:不要在生产环境中使用开发服务器。

请改用生产 WSGI 服务器。

调试模式:关闭

TimeoutError: [WinError 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应

标签: pythonhtmlflask

解决方案


推荐阅读