角色编辑的一个问题,代码如下,注释有详细描述!!!
来源: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是处理表单提交的值!
00
相似问题