【问题标题】:Import checkbox value from database从数据库导入复选框值
【发布时间】:2016-12-22 01:18:44
【问题描述】:

我正在开发一个 Python-Flask Web 应用程序,它应该可以作为政治家的维基百科。当我创建一个新的政治家时,默认情况下它被标记为草案,可以被更高级别的成员接受。因此,当我创建政治家页面时,它被 选中 作为草稿,当管理员接受该草稿时,draft 值变为 false。 我想知道如何根据属性 draft 的列值勾选/取消勾选复选框,这是一个 boolean (True/False)。然后我想根据我的表单结果更改它。如您所见,这是一个编辑功能:

这是我的政治表格,我用来编辑的表格:

class PoliticForm(FlaskForm):
  publicName = StringField('Public Name', validators=[DataRequired("Please enter politician public name.")])
  completeName = StringField('Complete Name', validators=[DataRequired("Please enter politician complete name.")])
  startDate = DateField('Start Date', format='%m-%d-%Y', validators=[DataRequired("Please enter the politician start Date.")])
  endDate = DateField('End Date', format='%m-%d-%Y', validators=(validators.Optional(),))
  draft = RadioField('Draft', choices=[(True,'Yes'),(False,'No')], )
  submit = SubmitField('Add Politician', validators=(validators.Optional(),))

我想在我的 HTML Jinja2 视图中检查该草稿行,即:

<div class="form-group">
                        <label for="draft">Draft</label>
                        <input type="checkbox" name="draft" class="form-control" id="email" value="{{politician.draft}}">
                    </div>

我需要使用 checked 参数吗?如何勾选它是否为 True 并取消勾选它是否为 False,然后将该更改发送到我的控制器?

politicians/views.py/edit_politician

@politicians_blueprint.route("/edit_politician/<idPol>", methods=["POST", "GET"])
@login_required
def edit_politician(idPol=1):
  form = PoliticForm()
  politician = Politic.query.filter_by(idPolitician=idPol).first()
  if request.method == "POST":
    politician.publicName = request.form['publicName']
    politician.completeName = request.form['completeName']
    politician.draft = request.form['draft']
    if request.form.get('date') != 'None':
      politician.startDate = datetime.datetime.strptime(request.form.get('date'), '%m/%d/%Y').strftime('%Y-%m-%d')
      print politician.startDate
    if request.form.get('date2') != 'None':
      politician.endDate = datetime.datetime.strptime(request.form.get('date2'), '%m/%d/%Y').strftime('%Y-%m-%d')
      print politician.endDate
    db.session.commit()
    return redirect(url_for('home.home'))
  elif request.method == "GET":
    print politician.startDate
    if politician.startDate is not None:
      dateStart = politician.startDate.strftime("%Y-%m-%d")
      politician.startDate = datetime.datetime.strptime(dateStart, '%Y-%m-%d').strftime('%m/%d/%Y')
    if politician.endDate is not None:
      dateEnd = politician.endDate.strftime("%Y-%m-%d")
      politician.endDate = datetime.datetime.strptime(dateEnd, '%Y-%m-%d').strftime('%m/%d/%Y')

    return render_template("editPolitician.html", politician=politician)

有什么想法吗?我真的在为此苦苦挣扎..

问候

【问题讨论】:

    标签: python checkbox flask jinja2


    【解决方案1】:

    你可以试试

    <input type="checkbox" name="draft" class="form-control" id="email" {% if politician.draft %}checked="checked"{% endif %}>
    

    或者通过jQuery修改复选框的状态(如果你使用的话)

    <script>
      {% if politician.draft %}
        $('input[name="draft"]').prop('checked', true);
      {% endif %}
    </script>
    

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 2016-11-22
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多