Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当值为False时,为什么我的表单中总是选中我的复选框?_Python_Python 3.x_Flask_Flask Sqlalchemy_Flask Wtforms - Fatal编程技术网

Python 当值为False时,为什么我的表单中总是选中我的复选框?

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

我正在制作一个FLask web应用程序

我有一张带复选框的表格

此表单用于添加或编辑“任务”

创建任务时,复选框未选中。我勾选一个或两个,然后提交表格。 更新任务时,即使在“创建”过程中没有选中所有复选框,也会选中所有复选框

这是我的模型:

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