角色编辑的一个问题,代码如下,注释有详细描述!!!

来源:8-2 .角色管理

类嗨宾果啊

2017-10-09


@admin.route('/role/edit/<int:id>', methods=['GET', 'POST'])
@admin_login_re
def role_edit(id=None):
   form = RoleForm()
   role = Role.query.get_or_404(int(id))
   print(role, role.name, role.auths)
   #    问题其实是我偷懒发现的,既然路由的默认方法是get,就是在编辑的视图函数中,将下面注释的语句取消if条件
   # 判断后,编辑数据提交会不正常,编辑之后数据还是原有的,表面上成功,实则数据库并没有更改,加上if后,修改数据
   # 正常!类似的问题也在其他的编辑视图中出现,既然编辑时从表单提交数据,post应该直接进form.validate_on_submit()这个判断去,为何向下面的注释这么写会影响?而且既然在form.validate_on_submit()外,默认都是get方法,两者怎么影响的?

   # if request.method == 'GET':
   #     form.auths.data = list(map(lambda x: int(x), role.auths.split(',')))


   if form.validate_on_submit():
       data = form.data
       role_account = Role.query.filter_by(name=data['name']).count()
       if role_account == 1 and role.name != data['name']:
           flash('角色修改失败!', 'error')
           return redirect(url_for('admin.role_edit', id=id))
       role.name = data['name']
       role.auths = ','.join(map(lambda x: str(x), data['auths']))
       # 查看数据是否正常
       print(data['auths'], role.name, role.auths)
       db.session.add(role)
       db.session.commit()
       flash('角色修改成功', 'success')
       return redirect(url_for('admin.role_list', page=INDEX_PAGE))
   # 放在这里不写if语句则没问题
   form.auths.data = list(map(lambda x: int(x), role.auths.split(',')))
   return render_template('admin/role_edit.html', form=form, role=role)



写回答

1回答

rustgopy

2017-10-10

同学,你好,这里GET是对form.auths动态赋值,POST是处理表单提交的值!

0
0

Python Flask 构建微电影视频网站

Python 最好用轻量级框架,让你轻松胜任 Python Web 工程师

683 学习 · 663 问题

查看课程