Python 当值为False时,为什么我的表单中总是选中我的复选框?
我正在制作一个FLask web应用程序 我有一张带复选框的表格 此表单用于添加或编辑“任务” 创建任务时,复选框未选中。我勾选一个或两个,然后提交表格。 更新任务时,即使在“创建”过程中没有选中所有复选框,也会选中所有复选框 这是我的模型:Python 当值为False时,为什么我的表单中总是选中我的复选框?,python,python-3.x,flask,flask-sqlalchemy,flask-wtforms,Python,Python 3.x,Flask,Flask Sqlalchemy,Flask Wtforms,我正在制作一个FLask web应用程序 我有一张带复选框的表格 此表单用于添加或编辑“任务” 创建任务时,复选框未选中。我勾选一个或两个,然后提交表格。 更新任务时,即使在“创建”过程中没有选中所有复选框,也会选中所有复选框 这是我的模型: class Task(db_mysql.Model): __tablename__ = "W551je5v_pb_tasks" id = db_mysql.Column('id', db_mysql.Integer, p
class Task(db_mysql.Model):
__tablename__ = "W551je5v_pb_tasks"
id = db_mysql.Column('id', db_mysql.Integer, primary_key=True)
name = db_mysql.Column('name', db_mysql.Unicode)
introduction = db_mysql.Column ('introduction', db_mysql.Unicode)
description = db_mysql.Column('description', db_mysql.Unicode)
id_platform = db_mysql.Column('id_platform', db_mysql.Integer, db_mysql.ForeignKey('W551je5v_pb_platforms.id'))
id_type_task = db_mysql.Column('id_type_task', db_mysql.Integer, db_mysql.ForeignKey('W551je5v_pb_type_tasks.id'))
url_keywords = db_mysql.Column ('url_keywords', db_mysql.Integer)
url_keywords_description = db_mysql.Column ('url_keywords_description', db_mysql.Unicode)
minimum = db_mysql.Column ('minimum', db_mysql.Integer)
minimum_description = db_mysql.Column ('minimum_description', db_mysql.Unicode)
url_list = db_mysql.Column ('url_list', db_mysql.Integer)
url_list_description = db_mysql.Column ('url_list_description', db_mysql.Unicode)
url_usernames = db_mysql.Column ('url_usernames', db_mysql.Integer)
url_usernames_description = db_mysql.Column ('url_usernames_description', db_mysql.Unicode)
这是我的表格:
class NewTaskForm(FlaskForm):
name = StringField('Name', validators=[DataRequired(), Length(min=2, max=200)])
introduction = TextAreaField ('Introduction', render_kw={'rows': 5},
validators=[DataRequired (), Length (min=2, max=12000)])
description = TextAreaField ('Description', render_kw={'rows': 20},
validators=[DataRequired (), Length (min=2, max=12000)])
platform = SelectField('Platform', validators=[DataRequired()], choices=[],coerce=int)
type_task = QuerySelectField ('Type Task', validators=[DataRequired ()], query_factory=GetTypesTask,
get_label='name')
url_keywords = BooleanField ('Url Keywords', default=False)
url_keywords_description = TextAreaField ('Url Keywords description', render_kw={'rows': 10})
minimum = BooleanField ('Minimum', default=False)
minimum_description = TextAreaField ('Minimum description', render_kw={'rows': 10})
url_list = BooleanField ('Url List', default=False)
url_list_description = TextAreaField ('Url list description', render_kw={'rows': 10})
url_usernames = BooleanField ('Url Usernames', default=False)
url_usernames_description = TextAreaField ('Url Names description', render_kw={'rows': 10})
submit = SubmitField('Save')
以下是我的路线:
@app.route('/new_task', methods=['GET', 'POST'])
@login_required
def new_task():
if current_user.is_authenticated:
if current_user.user_email == 'ninobuttez@gmail.com':
form = NewTaskForm()
prepare_content_SelectList = db_mysql.session.query(Platform.id, Platform.name, Category.name) \
.order_by(Platform.name).join(Category).all()
list_content_SelectList = []
for content in prepare_content_SelectList:
label = content[1] + ' - ' + content[2]
list_content_SelectList.append((content[0], label))
form.platform.choices = list_content_SelectList
if form.validate_on_submit():
print(f"form.platform.data : {form.platform.data}")
task = Task(name=form.name.data, id_platform=form.platform.data, \
id_type_task=form.type_task.data, \
description=form.description.data, \
introduction=form.introduction.data, \
url_keywords=form.url_keywords.data, \
url_keywords_description=form.url_keywords_description.data, \
minimum=form.minimum.data, \
minimum_description=form.minimum_description.data, \
url_list=form.url_list.data, \
url_list_description=form.url_list_description.data, \
url_usernames=form.url_usernames.data, \
url_usernames_description=form.url_usernames_description.data
)
db_mysql.session.add(task)
db_mysql.session.commit()
flash(f'Task {form.name.data} was created with success!', 'success')
return redirect(url_for('tasks'))
return render_template('new_task.html', title='New Task', form=form, legend='New Task')
else:
return render_template('dashboard.html', title='Dashboard')
else:
flash('You need to be connected!', 'danger')
return redirect(url_for('login'))
@app.route('/task/<int:task_id>/edit', methods=['GET', 'POST'])
@login_required
def edit_task(task_id):
if current_user.is_authenticated:
if current_user.user_email == 'ninobuttez@gmail.com':
task = Task.query.get_or_404(task_id)
form = NewTaskForm(obj=task)
prepare_content_SelectList = db_mysql.session.query(Platform.id, Platform.name, Category.name) \
.order_by(Platform.name).join(Category).all()
list_content_SelectList = []
for content in prepare_content_SelectList:
label = content[1] + ' - ' + content[2]
list_content_SelectList.append((content[0], label))
form.platform.choices = list_content_SelectList
if form.validate_on_submit():
print (f"""
form.url_keywords : {form.url_keywords.data}
form.minimum : {form.minimum.data}
form.url_list : {form.url_list.data}
form.url_usernames : {form.url_usernames.data}
""")
task.name = form.name.data
task.id_platform = form.platform.data
task.id_type_task = form.type_task.data.id
task.introduction = form.introduction.data
task.description = form.description.data
task.url_keywords = form.url_keywords.data
task.url_keywords_description = form.url_keywords_description.data
task.minimum = form.minimum.data
task.minimum_description = form.minimum_description.data
task.url_list = form.url_list.data
task.url_list_description = form.url_list_description.data
task.url_usernames = form.url_usernames.data
task.url_usernames_description = form.url_usernames_description.data
db_mysql.session.commit()
flash('Your Task has been updated', 'success')
return redirect(url_for('tasks'))
elif request.method == 'GET':
print(f"""
task.url_keywords : {task.url_keywords}
task.minimum : {task.minimum}
task.url_list : {task.url_list}
task.url_usernames : {task.url_usernames}
""")
form.name.data = task.name
form.platform.data = int(task.id_platform)
form.type_task.data = TypeTask.query.filter_by(id=task.id_type_task).first()
form.introduction.data = task.introduction
form.description.data = task.description
form.url_keywords.data = bool(task.url_keywords)
form.url_keywords_description.data = task.url_keywords_description
form.minimum.data =bool( task.minimum)
form.minimum_description.data = task.minimum_description
form.url_list.data = bool(task.url_list)
form.url_list_description.data = task.url_list_description
form.url_usernames.data = bool(task.url_usernames)
form.url_usernames_description.data = task.url_usernames_description
return render_template('new_task.html', title='Edit Task', form=form, legend='Edit Task')
else:
return render_template('dashboard.html', title='Dashboard')
else:
flash('You need to be connected!', 'danger')
return redirect(url_for('login'))
<div class='form-group w-50'>
{{ form.platform.label(class="ios-switch bigswitch green") }}
{{ form.platform(class="form-control form-control-sm") }}
</div>
<div class='form-group w-50'>
{{ form.type_task.label(class="ios-switch bigswitch green") }}
{{ form.type_task(class="form-control form-control-sm") }}
</div>
<div class='form-group w-50'>
{{ form.introduction.label(class="ios-switch bigswitch green") }}
{{ form.introduction(class="form-control form-control-sm", style="resize: both;overflow: auto;") }}
</div>
<h3>Targets</h3>
<div class='form-inline'>
{{ form.url_keywords.label(class="ios-switch bigswitch green", style="margin-left: 30px;margin-bottom: 30px;") }}
{{ form.url_keywords(class="form-control form-control-sm",style="margin-bottom: 30px;") }}
</div>
<div class='form-group w-50'>
{{ form.url_keywords_description.label(class="ios-switch bigswitch green") }}
{{ form.url_keywords_description(class="form-control form-control-sm", style="resize: both;overflow: auto;") }}
</div>
<div class='form-inline'>
{{ form.minimum.label(class="ios-switch bigswitch green", style="margin-left: 30px;margin-bottom: 30px;") }}
{{ form.minimum(class="form-control form-control-sm",style="margin-bottom: 30px;") }}
</div>
<div class='form-group w-50'>
{{ form.minimum_description.label(class="ios-switch bigswitch green") }}
{{ form.minimum_description(class="form-control form-control-sm", style="resize: both;overflow: auto;") }}
</div>
<div class='form-inline'>
{{ form.url_list.label(class="ios-switch bigswitch green", style="margin-left: 30px;margin-bottom: 30px;") }}
{{ form.url_list(class="form-control form-control-sm",style="margin-bottom: 30px;") }}
</div>
<div class='form-group w-50'>
{{ form.url_list_description.label(class="ios-switch bigswitch green") }}
{{ form.url_list_description(class="form-control form-control-sm", style="resize: both;overflow: auto;") }}
</div>
<div class='form-inline'>
{{ form.url_usernames.label(class="ios-switch bigswitch green", style="margin-left: 30px;margin-bottom: 30px;") }}
{{ form.url_usernames(class="form-control form-control-sm",style="margin-bottom: 30px;") }}
</div>
<div class='form-group w-50'>
{{ form.url_usernames_description.label(class="ios-switch bigswitch green") }}
{{ form.url_usernames_description(class="form-control form-control-sm", style="resize: both;overflow: auto;") }}
</div>
form.url_keywords : False
form.minimum : False
form.url_list : True
form.url_usernames : False
task.url_keywords : 0
task.minimum : 0
task.url_list : 1
task.url_usernames : 0