Flask写了两个页面,第一个是用户增加,第二个是获取数据库中的用户列表来修改信息。用户信息修改中用到了wtforms的SelectField控件,choices参数为调用数据库查询函数返回的字典。现在我发现当我增加完毕用户马上去维护信息时,用户列表并没有更新,也就是说SelectField并不是每次打开页面去查询列表。导致没办法对刚刚增加的用户进行修改。
路由函数:
@app.route('/main/userAlloc/userAllocManage', methods=['GET', 'POST'])
def userAllocManage():
from form import UserAllocForm
from Odb_cx import add_user_func
form = UserAllocForm()
if form.validate_on_submit():
login_name = form.login_name.data
alloc_list = form.alloc_list.data
print('调用用户权限入库函数')
message = add_user_func(login_name, alloc_list)
print(message)
flash(message)
return render_template('userAllocManage.html', Form=form)
form:
class UserAllocForm(Form):
from Odb_cx import func_query, user_query
login_name = SelectField('登录名称(手机号码):', choices=user_query())
alloc_list = SelectMultipleField('权限列表(可多选)', choices=func_query())
submit = SubmitField('提交')
列表查询函数:
def user_query():
try:
t = engine.execute("select a.sys_user_id,a.sys_user_name from sys_user a")
user_dict = []
for i in t:
user_dict.append((str(i[0]), i[1]))
return user_dict
except BaseException:
return '用户列表获取异常!'
现在希望每次请求/main/userAlloc/userAllocManage时从数据库获取最近的列表信息来初始化SelectField,求助各位如何实现
首先我建议你好好读读我写的这篇文章。
基于 flask 的 CRUD 操作
如果想要实现你的需求,你可以变通一下,把 choices 参数,从 form 类中赋值,放置到 view.py 视图函数的后一部分赋值。
但是这样的话,感觉不优雅,你还是好好看看文章吧。